在开发Web应用程序时,我应该在哪里放置外部JAR文件?

时间:2011-06-27 17:26:58

标签: java eclipse web-applications jar

我正在Eclipse中使用Java(Servlets / JSP)开发一个动态Web应用程序。我正在尝试使用外部JAR(我正在使用来自Apache Commons的StringUtils)并且我很困惑我应该把jar放在哪里(/lib/WEB-INF/lib?)以及如何配置我的类路径(在Eclipse中)。

我尝试将JAR放在上述两个位置,并通过单击项目属性中的Add JAR将它们加载到类路径中,并且两个解决方案都编译正常,但是给出了运行时错误,如下所示:

  

SEVERE:servlet UserList的Servlet.service()引发了异常   java.lang.NoClassDefFoundError:org / apache / commons / lang / StringUtils       在cs236369.hw5.db.MySqlDbHandler.insert(MySqlDbHandler.java:58)       at 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)       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)       在org.apache.catalina.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,VM或Eclipse管理它的方式中加载,所以我希望了解详细的解决方案。

1 个答案:

答案 0 :(得分:21)

必须将它们放在yourapp/WEB-INF/lib中。 (在eclipse中你正确地添加它们)。所以确保罐子真的在那里。请注意,如果您从eclipse中启动应用程序,则必须配置部署组装。

部署程序集在eclipse中通过right click > properties > deployment assembly配置。你应该“添加”你的“Java构建路径条目”