2011-12-29 2 views
4

내 프로젝트에서 GWT를 사용하고 있습니다. 최근에 GWT + Java + tomcat의 수동 컴파일을 Maven 프로젝트로 변환 해 보았습니다. 거의 전쟁에 성공적으로 패키지화 할 수있었습니다. .javax/validation/Path GWT Java Maven converstion

여기

EVERE: Exception while dispatching incoming RPC call java.lang.NoClassDefFoundError: javax/validation/Path at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at com.google.gwt.user.server.rpc.SerializationPolicyLoader.loadFromStream(SerializationPolicyLoader.java:196) at com.google.gwt.user.server.rpc.RemoteServiceServlet.loadSerializationPolicy(RemoteServiceServlet.java:90) at com.google.gwt.user.server.rpc.RemoteServiceServlet.doGetSerializationPolicy(RemoteServiceServlet.java:293) at com.google.gwt.user.server.rpc.RemoteServiceServlet.getSerializationPolicy(RemoteServiceServlet.java:157) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.prepareToRead(ServerSerializationStreamReader.java:455)

내가 내 내 pom.xml에 추가 된 추가 된 것입니다 : 의존성 등

<dependency> 
<groupId>com.google.gwt</groupId> 
<artifactId>gwt-servlet</artifactId> 
<version>${gwt.version}</version> 
<scope>compile</scope> 
</dependency> 

<dependency> 
<groupId>com.google.gwt</groupId> 
<artifactId>gwt-user</artifactId> 
<version>${gwt.version}</version> 
<scope>provided</scope> 
</dependency> 

내가 바람둥이에 배포 할 때,하지만 따라와 오류가 발생했습니다.

친절히 도와주세요.

문제점을 해결하기 위해 추가해야 할 사항은 무엇입니까?

답변

4

이 문제를 일으키는 것은 dependency scope입니다. compile은 실제로 기본 범위이므로 원하는 경우 첫 번째 종속성에서 생략 될 수 있습니다.

문제는 provided으로 선언 된 두 번째 이슈에 있습니다. 즉, 응용 프로그램은 웹 컨테이너가 해당 라이브러리/클래스를 제공 할 것으로 기대합니다. 필요한 클래스를 제공하지 않는 것 같습니다. 결과는 NoClassDefFoundError입니다.

<scope>provided</scope>을 제거하면 Maven에 응용 프로그램과 함께 해당 라이브러리를 패키지화하고 Tomcat이 해당 오류를 지나쳐야합니다.

컴파일시에 gwt-user을 사용할 수 있기 때문에 컴파일 타임 오류가 없습니다. Tomcat에서는 런타임에 사용할 수 없습니다.

+0

예 예, 좋습니다. 이것이 효과적이었습니다. 이제 애플리케이션을 시작할 수 있습니다. 고마워, 고마워. – BalaB