Java Eclipse部署程序集jar文件-NoClassDefFoundError&;ClassNotFoundException

Java Eclipse部署程序集jar文件-NoClassDefFoundError&;ClassNotFoundException,java,eclipse,deployment,jar,eclipse-mars,Java,Eclipse,Deployment,Jar,Eclipse Mars,在JavaSpringMVC应用程序中获取和NoClassDefFoundError和ClassNotFoundException,尽管我认为这可能发生在任何Java应用程序中。所讨论的类是通过部署程序集JAR文件从另一个项目导入的。我尝试了书中的每一种提神和清洁,但问题依然存在 当我从月食月球升级到月食火星时,这个问题就开始了。该项目是在Luna下创建的。一位刚开始接触火星的同事也看到了这一点。对他来说,这个项目是从Git的Luna化身中导入的 我甚至彻底清除了Eclipse安装、git存储库

在JavaSpringMVC应用程序中获取和NoClassDefFoundError和ClassNotFoundException,尽管我认为这可能发生在任何Java应用程序中。所讨论的类是通过部署程序集JAR文件从另一个项目导入的。我尝试了书中的每一种提神和清洁,但问题依然存在

当我从月食月球升级到月食火星时,这个问题就开始了。该项目是在Luna下创建的。一位刚开始接触火星的同事也看到了这一点。对他来说,这个项目是从Git的Luna化身中导入的

我甚至彻底清除了Eclipse安装、git存储库(客户端)、所有内容,并从github重新导入,从头开始。刷新,清洁所有东西,问题依然存在!这个项目已经运行了好几个月,虽然我记得很久以前看到过类似的问题,但是通过在部署程序集中添加项目条目,它很快得到了修复

在我的例子中,我以为我看到了jar文件正在部署,但我被误导了,因为我在/Applications/tomcat(Mac)下查看。实际部署位置是(同样在我的Mac上):
$HOME/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps

请参阅下面的完整错误文本

Feb 22, 2016 2:30:41 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [pvhub] in context with path [/mysolarhub] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/laplace/collector/ArchAPI] with root cause
java.lang.ClassNotFoundException: com.laplace.collector.ArchAPI
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at com.laplace.solarhub.controllers.ProjectsController.showMonitoring(ProjectsController.java:501)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

加里

我解决了这个问题。我正在发布问题和答案,以防对其他人有所帮助。我在SO和许多其他论坛上读了几十篇文章,没有一篇在我遇到这个问题时提到过这个问题


我在Mars下从头开始重建了依赖项(Deployment Assembly.jar)项目。我认为火星下的项目结构是不同的。旧项目(在Luna下创建)有一个主源目录,在主项目目录下显示为“src/main/java”。在Mars下创建的同一个项目在同一个地方只显示“src”。当我从Luna切换到源树时,Mars正在抱怨源树结构。我修复了它抱怨的错误,但这显然不是问题的全部。

如果只是显示“src”而不是“src/main/java”,eclipse就无法正确识别构建路径。右键单击java文件夹,然后从您的答案中单击“添加到构建路径”。听起来您在Luna中安装了EclipseMaven插件,但在Mars中没有安装,或者该项目以不同方式导入,因此它们不会在Mars下触发。m2e wtp插件通常能够正确处理桥接这两个设置。谢谢。事实上,我确实在Mars下安装了所有Maven插件。我今天做的一件事是重新构建项目,只是这次作为一个Maven项目开始。一切似乎都以这种方式更加一致地工作。在我创建一个常规Java项目并将其转换(项目->配置->转换为Maven项目)之前。它现在再次将主源文件夹显示为“src/main/java”。