我想直接使用java
命令运行WsImport。我使用以下命令(设置了CLASSPATH环境):
$ 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 :(得分:0)
这是一个特定于平台的问题。代码是在一个平台中编译的,导致一个特定于平台的jar,然后,虽然类和jar存在于你的类路径中,但是java不能识别它。
答案 1 :(得分:-1)
阅读详情:http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html#ixzz2ILpyqUVe