2016-05-10 5 views
0

Вот абсурдный сценарий, потому что я совершенно не знаю, почему это происходит.Java, развертывающая войну с Tomcat, давая NoClassDefFoundError

Я создал Java-сервлет, (maven), упакованный в качестве войны для развертывания на Tomcat server. Он отлично работает на двух тестовых машинах (поверьте мне), но когда он перемещается на другую машину, любое попадание на этот api дает NoClassDefFoundError для определенного класса.

Я проверил распакованный каталог проекта в папке webapps и содержит этот класс.

Каковы могут быть причины этого? Я проверил все, что мог, но никаких подсказок нигде. Я знаю, что вопрос не совсем ясен, но это все, что у меня есть.

Любые другие детали, если требуется, запрашивают их в комментариях.

Edit: (еще одна деталь)

версия Tomcat обновляется в новой машине ... Предыдущие машины имеют Apache Tomcat/7.0.59. У этого есть Apache Tomcat/8.0.33. Это может быть проблема?

EDIT:

Я до сих пор не уверен, что проблемы. После попытки найти проблему в течение многих часов, я снова настроил машину ... повторно установил jdk и Tomcat и развернулся на этом, и это сработало.

+0

любое изменение в Linux, ароматизатора/OS между машинами? – piyushj

+0

Вы проверили Manifest.mf? – 1N5818

+0

Linux такой же ... оба запускают CentOS – vish4071

ответ

1

Я предполагаю, что все классы есть, но где-то в военном файле есть класс, который использует другой класс, который находится в classpath родной, рабочей машины, но не другой. NoClassDefinition отличается от ClassNotFound, поэтому класс, вероятно, есть (его не должно хватать). К сожалению, похоже, что есть зависимость, которая не находится в исходном файле войны, но все еще выполняется и компилируется, потому что она находится на нативной машине classpath.

Проверьте свои .bash_profile или везде, где вы экспортируете дорожки классов, и вы, вероятно, найдете какой-нибудь JAR-файл, который вам нужно поставить в WAR.

Why am I getting a NoClassDefFoundError in Java?

+0

Но у проекта есть несколько зависимостей, которые помещаются в 'pom.xml' ... нет Пользовательские банки включены. Хотя есть 4 пакета, которые говорят между собой, и они находятся в папке классов, как и должно быть. – vish4071

+0

Опять же, только гипотеза. 'NoClassDefFoundError' не означает, что класс не существует, это вызывающе там, если вы распакуете военный файл, иначе вы увидите« ClassNotFound ». Некоторые классы, в которых используется класс внутри файла войны (который отсутствует), являются ИСПОЛЬЗОВАНИЕМ другого класса, который НЕ находится в военном файле, поэтому ОПРЕДЕЛЕНИЕ отсутствует, а не КЛАСС. Моя догадка заключается в том, что он находится в «classpath» нативной машине, поэтому он изначально был правильно разрешен, но не на новой машине, где «classpath» отличается. – 1N5818

 Смежные вопросы

  • Нет связанных вопросов^_^