在构建路径中添加项目时,Eclipse中的NoClassDefFoundError [英] NoClassDefFoundError in Eclipse when adding project in build path
问题描述
NoClassDefFoundError
。 我的项目如下所示:
JavaProject:BulkAdmin
- src
- com.mycompany.bulkadmin.SDK.util
- Login.java
动态Web项目:JSPTesting
- src
- com.mycompany.bulkadmin.jspController
- Controller.java
- WebContent
- index.html
- execute.jsp
这是控制流程:
- index.html载入
-
- index.html有一个重定向到execute.jsp的表单
- execute.jsp采用表单中返回的信息,并对Login进行静态调用。 java
- execute.jsp打印调用结果
Controller.java使用Login。 java的。我正在收到编译错误。为了解决这个问题,我做到了这一点:
- 右键单击JSPTesting - >属性
-
- 选择项目标签
- 点击添加
- 选择BulkAdmin(Project)
我不知道为什么,但现在当我得到一个 NoClassDefFoundError
。我已经做了一些谷歌搜索。我认为这意味着我弄坏了我的类路径,但我不知道如何解决这个问题。
java.lang.NoClassDefFoundError:com / myCompany / bulkadmin / SDK / util / Login
在com.myCompany。在org.apache.jsp.execute_jsp._jspService(execute_jsp.java:63)上的
$ org.apache.jasper.runtime.HttpJspBase上的
。 service(HttpJspBase.java:98)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 331)
在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
在org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
在org.apache.catalina.core.StandardWra pperValve.invoke(StandardWrapperValve.java:213)
在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
在org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 108)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
在org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
在org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
在org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
在org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(Thr eadPool.java:689)
在java.lang.Thread.run(Thread.java:595)
其他信息:
- 我正在使用tomcat(在Eclipse中)作为我的服务器
- 浏览器和eclipse控制台中出现异常
- execute.jsp是一个JSP
在SO上似乎有很多类似的问题。我已经读了大约15个,尝试了各种各样的东西,但是我认为我的问题有不同的解决方案。我可以提供更多的信息。
右键单击动态Web项目,转到属性>部署程序集并在其中添加从属项目。这样他们最终将作为JAR在 / WEB-INF / lib
中,完全在那里你想要的。
您需要转到属性> Java EE模块依赖关系。
另请参见:
- 在Eclipse构建路径中使用用户库时出现ClassNotFoundException
- Eclipse中部署程序集和J2EE模块依赖关系之间的区别
I am receiving an NoClassDefFoundError
in Eclipse when I try to run my project.
My Project looks like this:
JavaProject: BulkAdmin
- src
- com.mycompany.bulkadmin.SDK.util
- Login.java
Dynamic Web Project: JSPTesting
- src
- com.mycompany.bulkadmin.jspController
- Controller.java
- WebContent
- index.html
- execute.jsp
This is the control flow:
- index.html loads
- index.html has a form that redirects to execute.jsp
- execute.jsp takes the info returned in the form and makes a static call to Login.java
- execute.jsp prints the results of the call
Controller.java uses Login.java. I was receiving compilation errors. To resolve them I did this:
- Right click on JSPTesting -> properties
- Choose java build path on the left bar
- Choose projects tab
- Click add
- Choose BulkAdmin (Project)
I am not sure why but now when I am getting a NoClassDefFoundError
. I have done some googling. I think that this means that I have messed up my classpath somehow but I am not sure how to resolve this.
java.lang.NoClassDefFoundError: com/myCompany/bulkadmin/SDK/util/Login
at com.myCompany.bulkadmin.jspController.Controller.process(Controller.java:44)
at org.apache.jsp.execute_jsp._jspService(execute_jsp.java:63)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Other information:
- I am using tomcat (in Eclipse) as my server
- The exception shows up in the browser and the eclipse console
- execute.jsp is a JSP
It seems like there are many similar questions to this on SO. I have read about 15 of them and tried various things however I think that my question has a different solution. I can provide more information.
Rightclick your dynamic web project, go to Properties > Deployment Assembly and add the dependent projects there. This way they will end up as JAR in /WEB-INF/lib
, exactly there where you want it to be.
In Eclipse versions older than 3.5 you need to go to Properties > Java EE Module Dependencies.
See also:
- ClassNotFoundException when using User Libraries in Eclipse build path
- Difference between Deployment Assembly and J2EE Module Dependencies in Eclipse
这篇关于在构建路径中添加项目时,Eclipse中的NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!