Ошибка ClassNotFoundException при доступе к jar в веб-проекте - PullRequest
0 голосов
/ 11 ноября 2010

Резюме

Классы от сторонних jar файлов доступны при добавлении в путь сборки при выполнении автономного теста JUnit, но « ClassNotFoundException » при доступе через простые старые объекты Java из динамического веб-проект.

  • IDE используется: Eclipse
  • Веб-сервер: Apache 7

Подробнее

Мой проект требовал много сторонних jar-файлов, а именно sqlite, eclipse jdt & jsoup. Я создал этот проект как самостоятельный проект, и все классы из банок были доступны прекрасно.

Но теперь я скопировал всю папку "src" в "динамический веб-проект". Я создал папку "jars", которая содержит все эти jar-файлы сторонних разработчиков, и убедитесь, что все они добавлены в путь сборки, выполнив следующие действия:

Свойства проекта -> Путь сборки Java -> Библиотеки -> Добавить jar -> Выбрать все файлы jar из папки jars.

Эти jar-файлы хорошо доступны, когда я запускаю автономный тест JUnit внутри веб-проекта. Обратите внимание, что этот тест junit ни в коем случае не требует сервера.

Но когда я пытаюсь "Запустить на сервере ..", я продолжаю получать ClassNotFoundException, как это для всех сторонних классов:

java.lang.ClassNotFoundException: org.sqlite.JDBC
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)

Я уверен, что это как-то связано с моим незнанием того, как приложения развертываются в сети.

Ответы [ 3 ]

0 голосов
/ 13 ноября 2010

Я сталкивался с этой проблемой раньше с Eclipse и проектом Web Server Tools.Проверьте файлы .settings и другие файлы для настройки плагинов, которые вы используете в своем проекте.Возможно, вам придется удалить некоторые фильтры в представлении Eclipse.WST конструирует свой путь сборки по-другому, поэтому он может не использовать файлы jar, которые вы включили в свой проект.

0 голосов
/ 14 ноября 2010

Я понял это.Мне просто нужно было поместить все банки в каталог WEB-INF / lib.Я предполагал, что Eclipse выполнит все необходимые настройки для меня, когда я попросил использовать упомянутые банки.Но я думаю, что есть вещи, которые не очень хорошо автоматизированы.

0 голосов
/ 11 ноября 2010

Путь к классу времени выполнения может отличаться от пути к классу сборки. Создайте явную конфигурацию запуска. По умолчанию начнется путь к классу сборки, но вам, возможно, придется настроить его вручную, чтобы включить сторонние файлы.

...