2010-11-26 3 views
3

GWT를 기반으로 웹 응용 프로그램을 배포하고 있습니다. 내가 컴파일 할 때, 나는 오류를하지 않지만, 런타임에, 나는이 하나 (완료되지 스택 추적) 얻을 :GWT 런타임에서 이상한 ClassNotDefFoundException 받기

java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException 
at org.gvsig.remoteClient.sos.SOSClient.<init>(SOSClient.java:47) 
at com.uji.project.server.ConnectServiceImpl.makeConnection(ConnectServiceImpl.java:18) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

가에 의해 발생 :

Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 

나는이 웹 사이트에 읽은를 이는 아마도 하나 이상의 클래스가 실행 시간에 사용할 수 없지만 XML 파서의 일부 문제로 인해 오류가 발생하지만 XML 파서가 내 lib 폴더에 포함되어있는 경우에 발생했을 수 있습니다. 프로젝트의 lib 폴더에서 구체적으로 gwt-maps.jar, gwt-servlet.jarkxml2.jar *의 세 가지 JAR 파일을 찾을 수 있습니다.

내가 열면

"kxml2.jar"파일 나는 내 V1 폴더를 가지고, 폴더 조직 내에서 xmlpull 폴더가을보고 마지막으로 XmlPullParserException.class 수 있습니다.

그래서 ... lib 폴더에 포함 된 경우 런타임에이 클래스를 사용할 수 없습니까?

+0

lib 폴더가 런타임시 CLASSPATH에 포함됩니까? –

+0

프로젝트, 환경 설정, Java 빌드 경로 및 라이브러리 탭을 마우스 오른쪽 버튼으로 클릭하면이 3 개의 모든 .jar 파일이 해당 목록에 있음을 알 수 있습니다. 하지만 윈도우, 환경 설정, java 빌드 경로 및 클래스 변수를 수행하면 "lib 폴더"가 목록에없는 것을 볼 수 있습니다 ... 어느 것을 의미합니까? 감사! – Irene

+1

kxml2.jar 대신 xmlpull-.jar를 추가해 보셨습니까? http://www.findjar.com/class/org/xmlpull/v1/XmlPullParserException.html – Javi

답변

1

마지막으로 동료가이 런타임 오류에 대한 해결책을 알려주었습니다. : D

GWT 응용 프로그램을 배포하면 런타임에 필요한 모든 클래스, 라이브러리 및 기타 파일을 포함하는 작은 파일 구조 (보류 중) 아래에 많은 파일이 복사됩니다.

어떤 이유로 Eclipse (컴파일/전개시)에서 특정 라이브러리를 해당 PATH로 복사하도록하지 않으면 응용 프로그램은 해당 라이브러리를 런타임에서 찾지 못하고 오류를 발생시킵니다. (나를 위해)

솔루션 손으로 복사 해당 폴더에 해당 라이브러리처럼 간단했다 : 내 경우에는 "kxml2.jar"복사 된에서 "C : \ GWT-2.1.0 SOSProject \ 전쟁 \ \ WEB-INF \ lib ". 응용 프로그램을 다시 시작하고 방금 작업했습니다.: D

이 패치/솔루션이 다른 사람들이 GWT에서이 성가신 문제를 해결하는 데 도움이되기를 바랍니다!

1

에서 appengine 클래스는이 whitelist에있는 JRE 클래스에만 액세스 할 수 있습니다. 이 jar이 다른 클래스의 JRE를 사용하는 경우 런타임에 포함되지 않습니다.

Here "DOM, SAX 및 XSLT를 포함한 XML 처리 API"는 appengine과 호환된다는 것을 알 수 있습니다. 아마도 xmlpullparser는 호환되지 않지만 확실하지 않습니다.

0

시도해보십시오. 창 -> 환경 설정 -> Java 빌드 경로 -> 병 추가 프로젝트/lib로 이동하고 kxml2.jar을 선택하십시오. 확인을 클릭하십시오.

+0

아니, 시도했을 때 그게 작동하지 않았다. – Irene

0

결국 나는 처음부터 다시 시작해야했습니다. 동일한 작업 공간에서 나는 다른 프로젝트를 가지고 있었고, 아마도 그들 사이의 간섭이 있었을 것입니다.

그래서 GWT SDK의 압축을 풀고, 새 프로젝트를 시작하고, 새 프로젝트에 원본 소스 코드를 복사하고, 런타임에 배포했습니다. 이제는 이상한 ClassNotDefFound 오류가 발생하지 않습니다. 지금 나는 또 다른 것을 얻고있다. 그러나 그것은 또 다른 이슈이다! 모두에게 감사드립니다.