2014-04-16 5 views
1

java 명령을 사용하여 WsImport를 직접 실행하고 싶습니다. CLASSPATH 환경을 설정 한 상태에서 다음 명령을 사용하고 있습니다.NoClassDefFoundError

$ java com.sun.tools.ws.WsImport -d /home/bence/NetBeansProjects/WebFormsTest/build/generated-sources/jax-ws -Xendorsed -keep -B-jaxb-facets -wsdl -r /home/bence/NetBeansProjects/WebFormsTest/build/generated-sources/jax-ws/resources -s /home/bence/NetBeansProjects/WebFormsTest/build/generated-sources/jax-ws -verbose org.czentral.test.service.AdminService 

제목에 오류 메시지가 표시됩니다. 모든 세부 사항 :

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/xjc/Plugin 
    at java.lang.ClassLoader.findBootstrapClass(Native Method) 
    at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1058) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:413) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at com.sun.istack.tools.MaskingClassLoader.loadClass(MaskingClassLoader.java:82) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:270) 
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:363) 
    at java.util.ServiceLoader$1.next(ServiceLoader.java:445) 
    at com.sun.tools.xjc.Options.findServices(Options.java:952) 
    at com.sun.tools.xjc.Options.getAllPlugins(Options.java:374) 
    at com.sun.tools.xjc.Options.parseArgument(Options.java:692) 
    at com.sun.tools.ws.wscompile.WsimportOptions.parseArguments(WsimportOptions.java:326) 
    at com.sun.tools.ws.wscompile.WsimportOptions.parseArguments(WsimportOptions.java:232) 
    at com.sun.tools.ws.wscompile.WsimportTool.parseArguments(WsimportTool.java:359) 
    at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:193) 
    at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.tools.ws.Invoker.invoke(Invoker.java:135) 
    at com.sun.tools.ws.WsImport.main(WsImport.java:57) 

자, 여기까지 합리적인 설명은 클래스 경로에서 누락 된 .jar 될 것이다.

$ java com.sun.tools.xjc.Plugin 
Error: Main method not found in class com.sun.tools.xjc.Plugin, please define the main method as: 
    public static void main(String[] args) 

그래서 클래스 로더가 실제로 클래스를로드 할 수 있습니다 :하지만 실제로 다음과 같이 확인 올바른 단지를 보유하고 있습니다.

어떤 오류가 발생합니까?

답변

0

:

더에서 읽기. 코드가 플랫폼에서 컴파일되어 플랫폼 특정 jar이 생성되고 클래스와 jar가 클래스 경로에 존재하더라도 java는이를 인식하지 못합니다.

+1

답해 주셔서 감사합니다. 그러나'.class' 파일이'.jar' 파일에 표시되는 것에 대한 내 진단만을 근거로 삼는 것이 아닙니다. 마지막 코드 블록에서 * 클래스 로더가 클래스를 성공적으로로드하고 * main * 메소드가 없다고보고합니다. – vbence