2017-06-05 73 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文件,看看你的班級是否出現在那裏? –