NoClassDefFoundError при использовании загрузки общих файлов

Я использую commons-fileupload-1.1.1 и commons-io-1.3.2 для загрузки/выгрузки файлов в веб-приложении с java 6. На локальном хосте он работает правильно, потому что у меня есть 2 jar-файла в моей библиотеке (server\default\ lib) (я использую jboss 4).

Когда я развертываю приложение на сервере, у меня есть исключение, когда я пытаюсь загрузить/выгрузить файлы:

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

Единственное различие между локальным хостом и сервером: на сервере у меня нет двух банок.

Когда я меняю путь к классам проекта и добавляю две банки, я развертываю приложение -> у меня такое же исключение.

Какие-либо предложения?


person as_taous    schedule 21.05.2014    source источник
comment
Если бы класса не было в вашем пути к классам, вы бы получили ClassNotFoundException. Вы получаете NoClassDefFoundError, что обычно вводит в заблуждение. Вероятно, это происходит из-за ошибки статического инициализатора в другом классе, на который ссылаются.   -  person jgitter    schedule 21.05.2014
comment
@jgitter, я думаю, вы меняете местами два: stackoverflow.com/questions/1457863/   -  person tom    schedule 22.05.2014
comment
Я не думаю, что я Том.   -  person jgitter    schedule 22.05.2014
comment
@tom, ваш связанный вопрос на самом деле подтверждает то, что я сказал, просто он более глубок.   -  person jgitter    schedule 22.05.2014


Ответы (1)


Есть 2 способа сделать это:

  1. Для конкретного приложения: добавьте 2 jar-файла в папку WEB-INF/lib вашего проекта, создайте проект и разверните его.
  2. В качестве альтернативы попробуйте папку JBOSS_4_AS\server\all\lib. Таким образом, все приложения, развернутые на вашем сервере приложений JBOSS 4, смогут видеть 2 jar-файла.

Надеюсь, это поможет.

person Buhake Sindi    schedule 22.05.2014
comment
: Я протестировал первое решение, но оно не работает (то же исключение), это нормально? Второе решение работает, но я хочу понять, почему первое решение не работает. - person as_taous; 22.05.2014
comment
Не имею представления. Я не знаю, использовали ли вы точно такие же банки для создания своего проекта. NoClassDefFoundError означает, что ваш код скомпилирован, но файл класса не может быть найден ClassLoader во время выполнения. Существуют различные факторы и, если вы не сообщите нам, какие jar-файлы вы использовали для компиляции, с какой версией JDK вы компилируете, версию JDK, которую запускает JBoss AS, и есть ли в коде или JBoss аналогичные общие файлы для загрузки и общие файлы-IO. lib папки, мы точно не сможем помочь. - person Buhake Sindi; 23.05.2014
comment
Я использую java 6 и jboss4. - person as_taous; 02.06.2014