Java 无法识别作为外部自定义jar添加到应用程序的.class文件

Java 无法识别作为外部自定义jar添加到应用程序的.class文件,java,eclipse,maven,jar,Java,Eclipse,Maven,Jar,我使用maven为一个dao和模型包创建了一个外部定制jar文件,我正在客户机应用程序中导入该jar文件,我想在其中访问dao方法,但它给出了java.lang.NoClassDefFoundError:com/test/users/dao/UserDao,但是.class文件存在于jar文件中。我能够在客户端web应用程序中看到特定定制jar文件的包和方法。 在服务端项目中,我们将其作为客户机应用程序的jar,maven pom文件具有以下依赖性 groupId--com.test artif

我使用maven为一个dao和模型包创建了一个外部定制jar文件,我正在客户机应用程序中导入该jar文件,我想在其中访问dao方法,但它给出了java.lang.NoClassDefFoundError:com/test/users/dao/UserDao,但是.class文件存在于jar文件中。我能够在客户端web应用程序中看到特定定制jar文件的包和方法。 在服务端项目中,我们将其作为客户机应用程序的jar,maven pom文件具有以下依赖性

groupId--com.test

artifactId——服务

名称--testServiceGjcp

包装——罐

版本-1.0.0-BUILD-SNAPSHOT

根据上面的依赖属性groupid、aritfactid和version,我们在客户机应用程序maven pom.xml文件中将其作为依赖项提供,然后在客户机maven依赖项中添加生成的服务jar文件并构建客户机应用程序,jar已经创建,并且能够看到生成的jar文件中的.class文件

在役项目结构如下所示

但是我们仍然得到java.lang.NoClassDefFoundError,即使.class文件及其相应的包以及该特定.class文件的方法存在

这里我粘贴了实际错误的完整堆栈跟踪

11:39:34.466 [http-bio-8080-exec-18] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'appServlet' processing GET request for [/SpringSecurity/login]
11:39:34.479[http-bio-8080-exec-18]调试o.s.w.s.m.m.a.RequestMappingHandlerMapping-查找路径/登录的处理程序方法 11:39:34.481[http-bio-8080-exec-18]调试o.s.w.s.m.m.a.RequestMappingHandlerMapping-返回处理程序方法[public org.springframework.web.servlet.ModelAndView com.test.controller.MainController.login(java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest)] 11:39:34.481[http-bio-8080-exec-18]调试o.s.b.f.s.DefaultListableBeanFactory-返回单例bean“mainController”的缓存实例 11:39:34.481[http-bio-8080-exec-18]调试o.s.web.servlet.DispatcherServlet-[/SpringSecurity/login]最后修改的值为:-1 11:39:34.543[http-bio-8080-exec-18]调试o.s.web.servlet.DispatcherServlet-无法完成请求 org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是java.lang.NoClassDefFoundError:com/test/users/dao/UserDao 在org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259)~[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)~[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)~[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:621)[ServletAPI.jar:na] 位于org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)[spring-webmvc-3.2.8.RELEASE.jar:3.2.8.RELEASE] 在javax.servlet.http.HttpServlet.service(HttpServlet.java:722)[ServletAPI.jar:na] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)[catalina.jar:7.0.27] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)[catalina.jar:7.0.27] 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)[catalina.jar:7.0.27] 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)[catalina.jar:7.0.27] 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)[catalina.jar:7.0.27] 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)[catalina.jar:7.0.27] 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)[catalina.jar:7.0.27] 在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)[catalina.jar:7.0.27] 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)[catalina.jar:7.0.27] 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)[catalina.jar:7.0.27] 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)[tomcat coyote.jar:7.0.27] 在org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)[tomcat coyote.jar:7.0.27] 在org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)[tomcat coyote.jar:7.0.27] 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[na:1.7.0_75] 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[na:1.7.0_75] 在java.lang.Thread.run(Thread.java:745)[na:1.7.0_75] 原因:java.lang.NoClassDefFoundError:com/test/users/dao/UserDao 在com.test.users.service.MyUserDetailsService.loadUserByUsername(MyUserDetailsService.java:31)~[MyUserDetailsService.class:na] 登录(MainController.java:53)~[MainController.class:na] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[na:1.7.0_75] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)~[na:1.7.0\u 75] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.7.0\u 75] 在java.lang.reflect.Method.invoke(Method.java:606)~[na:1.7.0_75] 位于org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:21