我正在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管理它的方式中加载,所以我希望了解详细的解决方案。
答案 0 :(得分:21)
必须将它们放在yourapp/WEB-INF/lib
中。 (在eclipse中你正确地添加它们)。所以确保罐子真的在那里。请注意,如果您从eclipse中启动应用程序,则必须配置部署组装。
部署程序集在eclipse中通过right click > properties > deployment assembly
配置。你应该“添加”你的“Java构建路径条目”