Ошибка ClassNotFoundException при доступе к банке в веб-проекте

Резюме

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

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

Подробности

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

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

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

Эти банки доступны, когда я запускаю автономный тест 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)

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


person brayne    schedule 11.11.2010    source источник


Ответы (3)


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

person Kelly S. French    schedule 11.11.2010

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

person Alex Marshall    schedule 12.11.2010

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

person brayne    schedule 13.11.2010