使用XmlBeans生成的类时出错

我已经从xsd文件生成了XMLBeans类,并将它们打包在一个jar文件中。 然后我把这个jar添加到eclipse中的项目类路径中,一切都编译好了。 我使用Maven从我的项目中构建了一个独立的jar文件,并且构建成功,但是当我尝试运行它时,我收到此错误:

Exception in thread "main" java.lang.ExceptionInInitializerError at com.oblicore.oblisync.resolutions.TestsDocument$Factory.parse(TestsDo cument.java:126) at com.oblicore.oblisync.handlers.TransferEntitiesHandler.getResolution( TransferEntitiesHandler.java:117) at com.oblicore.oblisync.handlers.TransferEntitiesHandler.resolveConflic ts(TransferEntitiesHandler.java:103) at com.oblicore.oblisync.main.Orchestrator.run(Orchestrator.java:107) at com.oblicore.oblisync.main.Orchestrator.main(Orchestrator.java:58) Caused by: java.lang.RuntimeException: Cannot load SchemaTypeSystem. Unable to l oad class with name schemaorg_apache_xmlbeans.system.s8B21CFFFCFED0B2438C2585C61 F113F7.TypeSystemHolder. Make sure the generated binary files are on the classpa th. at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:7 83) at com.oblicore.oblisync.resolutions.TestsDocument.(TestsDocumen t.java:19) ... 5 more Caused by: java.lang.ClassNotFoundException: schemaorg_apache_xmlbeans.system.s8 B21CFFFCFED0B2438C2585C61F113F7.TypeSystemHolder at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:303) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:7 69) ... 6 more 

缺少的类是在我用XmlBeans创建的jar中,我如何告诉maven将它添加到它从我的项目创建的jar中?

在生成的jar文件中,确保已包含从xmlbeans生成的类文件。

来自堆栈跟踪:

 Caused by: java.lang.ClassNotFoundException: schemaorg_apache_xmlbeans.system.s8 B21CFFFCFED0B2438C2585C61F113F7.TypeSystemHolder 

它表明在编译期间所需的类文件在类路径中,但在您构建的jar中,这些文件丢失了。

检查您的jar文件以查看是否存在这些类。

编辑:按照问题重新编写

要在Maven中构建具有jar-with-dependencies jar,请使用jar-with-dependencies选项, 例如

两个非常好的参考:

  1. http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-basics.html

  2. http://thomassundberg.wordpress.com/2011/03/05/create-an-executable-jar-from-maven/

在第二个中,如果你的jar不是可执行的jar,你不需要主类

在执行WSDL2Java时,将创建名为resources的目录。 将在资源下显示的schemaorg_apache_xmlbeans复制到项目的类路径。 这应该是修复。

当您遇到此类错误时,WSDL2Java生成的TypeSystemHolder.class不会放在类路径中以避免此错误。

请从“resource / schemaorg_apache_xmlbeans / system / s68C41DB812F52C975439BA10FE4FEE54”文件夹中复制TypeSystemHolder.class。

并将TypeSystemHolder.class文件粘贴到您的classpath文件夹(build / classes / schemaorg_apache_xmlbeans / system / s68C41DB812F52C975439BA10FE4FEE54)文件夹中

请在pom.xml中添加以下标记。 错误将走了

     org.apache.maven.plugins maven-dependency-plugin 2.1   copy process-resources  copy     org.apache.openejb openejb-javaagent 3.0-beta-2 ${project.build.directory}          target/generated-sources/axis2/wsdl2code/resources   target/generated-sources/xmlbeans/resources   src/main/resources    

提取要包含schemaorg_apache_xmlbeans文件夹的jar。 复制schemaorg_apache_xmlbeans压缩文件夹中的schemaorg_apache_xmlbeans文件夹(来自jar提取的结果)。 在解压缩文件夹中打开命令提示

使用jar cf命令再次制作jar。 例如jar cf test.jar * ,包括所有文件夹。

部署那个jar。