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

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

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

严重:Servlet的Servlet.service()UserList在cs236369.hw5.servlets的cs236369.hw5.db.MySqlDbHandler.insert(MySqlDbHandler.java:58)抛出exceptionjava.lang.NoClassDefFoundError:org / apache / commons / lang / StringUtils .UserList.doGet(UserList.java:50)位于org.apache的javax.servlet.http.HttpServlet.service(HttpServlet.java:617)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)。 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)at org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:102)atg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler。在java.lang.Thread.run(未知来源)的org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)上的进程(Http11Protocol.java:588)

那么……我如何加载外部JAR?

请注意,我不熟悉外部JAR如何加载Java,VM或Eclipse管理它的方式,所以我很欣赏详细的解决方案。

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

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