简体   繁体   English

NoClassDefFoundError动态Web项目Eclipse

[英]NoClassDefFoundError Dynamic Web Project Eclipse

I have a Java web project which inside a .jar file as external Library added through Build Path -> Configure Build Path -> Add external jars . 我有一个Java Web项目,该文件位于.jar文件中,作为通过Build Path -> Configure Build Path -> Add external jars This jar it's been built using Maven's clean install argument and it uses org.apache.httpcomponents library added as dependency in his own pom.xml file. 这个jar是使用Maven的clean install参数构建的,并且使用org.apache.httpcomponents库作为依赖项添加到他自己的pom.xml文件中。

Every time I try to invoke a certain url route to execute a Servlet which inside that jar invocation, I get this error java.lang.ClassNotFoundException: my.package.name.MyClass 每次我尝试调用某个url路径来执行在该jar调用中执行的Servlet时,都会收到此错误java.lang.ClassNotFoundException: my.package.name.MyClass

The invocation is shown below: 调用如下所示:

import my.package.name.MyClass;
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    ...
    MyClass mc = new MyClass();//<- java.lang.ClassNotFoundException
    ...
}

MyClass is a simple HTTP Client which has to send an HTTP request to an HTTP Server. MyClass是一个简单的HTTP客户端,必须将HTTP请求发送到HTTP Server。

This is what I'm doing: Right click on the project -> Run on server -> [shows the index.jsp] -> Click on a button inside the index -> Exception 这就是我正在做的事情:右键单击项目->在服务器上运行-> [显示index.jsp]->单击索引内的按钮->异常

The stacktrace as requested: 根据要求的堆栈跟踪:

java.lang.ClassNotFoundException: my.package.name.MyClass
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at my.servlet.package.name.doGet(MyServletClass.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

If you've used mvn install to build the jar that the project is using, add it to your pom.xml instead of the build path. 如果您使用mvn install来构建项目正在使用的jar,请将其添加到pom.xml而不是构建路径中。

The install part of maven will install it in your local repository and you can then include it in your pom. maven的install部分会将其安装在本地存储库中,然后可以将其包含在pom中。

I think you can also add the jar to be exported on the exports tab of the build path configuration, but I would use Maven to import the project from your local repo. 我认为您也可以在构建路径配置的“导出”选项卡上添加要导出的jar,但是我将使用Maven从本地存储库导入项目。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM