Куда я должен поместить внешние файлы JAR при разработке веб-приложения?

Я разрабатываю динамическое веб-приложение с Java (Servlets/JSP) в Eclipse. Я пытаюсь использовать внешний JAR (я использую StringUtils из Apache Commons), и я не понимаю, куда мне поместить банку (/lib, /WEB-INF/lib?) и как мне нужно настроить путь к классу (в Затмение).

Я попытался поместить JAR-файлы в оба вышеупомянутых места и загрузить их в путь к классам, щелкнув Add JAR в свойствах проекта, и оба решения компилируются нормально, но дают ошибку времени выполнения, например:

СЕРЬЕЗНЫЙ: Servlet.service() для сервлета UserList выдал исключение java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils в cs236369.hw5.db.MySqlDbHandler.insert(MySqlDbHandler.java:58) в cs236369.hw5.servlets .UserList.doGet(UserList.java:50) в javax.servlet.http.HttpServlet.service(HttpServlet.java:617) в javax.servlet.http.HttpServlet.service(HttpServlet.java:717) в org.apache. catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 233) на org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) на org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) на org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:102) на org.apache.catali na.core.StandardEngineValve.invoke(StandardEngineValve.java:109) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) в org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: 859) в org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) в org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) в java.lang .Thread.run (неизвестный источник)

Итак... как мне загрузить внешние JAR-файлы?

Обратите внимание, что я не очень хорошо знаком с тем, как внешние JAR-файлы загружаются в Java, в виртуальную машину или как Eclipse управляет всем этим, поэтому я был бы признателен за подробные решения.


person Amir Rachum    schedule 27.06.2011    source источник


Ответы (1)


Они должны быть размещены в yourapp/WEB-INF/lib. (В eclipse вы добавляете их правильно). Так что убедитесь, что банка действительно там. Обратите внимание: если вы запускаете приложение из eclipse, вам придется настроить сборку развертывания.

Сборка развертывания настраивается через right click > properties > deployment assembly в eclipse. Там вы должны «Добавить» свои «записи пути сборки Java»

person Bozho    schedule 27.06.2011
comment
вам нужно будет настроить сборку развертывания. - вот что я имел в виду, когда сказал, что был бы признателен за более подробные объяснения :) Я понятия не имею, что это значит. Вы можете объяснить, пожалуйста? - person Amir Rachum; 27.06.2011
comment
@Божо, если мне нужно поместить банку в корневой каталог, я имею в виду вне WEB-INF/lib, то как ее собрать? - person Achyut; 09.10.2013