2013-06-20 6 views
0

У меня есть класс, имеющий статические конечные методы. [Say A, B, C]. C вызывает другой класс D [D's пакет импортируется в C] В сборке maven [say M.jar], что у меня нет пакета D. Во время выполнения, когда я пытаюсь вызвать A с M.jar в classpath, noclasdef ошибка говорит D не prsent.Получение noClassDefFoundError

Почему я получаю это? Поделитесь своими мыслями

упаковка TEST1 импорт test.CHECK.TestA; import test.CHECK.TestB; Фабрика класса

{

конечного статического Int А() {// некоторая ссылка на test.CHECK.TestA}

статические INT B() {// некоторая ссылка на test.CHECK.TestB}

статические INT С() {}

меня банку, содержащую этот класс и пакет test.CHECK.TestB в этом jar.Howver, этот сосуд не содержит test.CHECK.TestA.

Теперь моя клиентская программа, имеющая эту банку, вызывает c(). Затем, получив ClassNotFoundException для TestA, хотя мы не вызываем A(). Почему это так?

ответ

0

Я полагаю, что вы используете Maven, и я тоже полагаю, что у вас есть два проекта.

Вы сказали, что в вашем банке у вас нет класса testA, то этот класс не добавляется в путь к классам, а затем jvm не может найти его для использования.

Вы должны учитывать, что любой класс, который вы хотите использовать в своем приложении, должен быть добавлен в путь класса приложения. Это может быть добавлено в этот Jar или другой Jar, o бесплатный, но его необходимо добавить.

Я надеюсь вам помочь.

+0

Спасибо за ваши входные данные. Я не звоню A(), тогда зачем это требуется во время выполнения?, Может потребоваться для сборки maven. Также наблюдается, что мы не получаем этот noclasdef, если A() является просто статическим , а не окончательный статический – user170114

+0

Пожалуйста, напишите свой код. – markosca

+0

Я не должен делиться сценарием code.the. X сценарий с образцом кода, который я предоставил выше. Я озадачен тем, почему мы не получаем ошибку, если meth A является просто static.Please, дайте мне знать, какая информация, кроме кода мне нужно предоставить – user170114

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