2017-06-05 72 views
0

我正在用maven和Spring构建一个webapp。我有一个DTO的我的服务模块,我想在我的Web模块使用它,所以,我已经把依赖,像这样的服务:maven spring webapp上的java.lang.NoClassDefFoundError

<dependency> 
    <groupId>my.web</groupId> 
    <artifactId>my.service</artifactId> 
    <version>1.0.0</version> 
</dependency> 

在我的控制器我使用它:

UserDTO u1 = new UserDTO(1,"User 1", "New User"); 

但是,我得到一个:

java.lang.NoClassDefFoundError: my/service/dto/UserDTO 
my.web.controllers.Controller.home(Controller.java:38) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:498) 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 

不知道如何解决这个问题。 maven可能有什么不对吗?

+0

你明白什么错误通常意味着什么呢? –

+0

这意味着,出于某种原因,UserDTO的.class在请求时不可用。 – Manu

+0

它应该可用吗? jar文件是部署的一部分吗? –

回答

0

如果您使用多个模块springboot加分装

  <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <classifier>exec</classifier> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

我已经添加了这些行,同样的错误出现。 – Manu

+0

尝试清理/完全重建后添加?添加到根模块? – StanislavL

+0

查看包装的.jar或.war文件,看看你的班级是否出现在那里? –