2011-12-15 210 views
8

我從xsd文件生成了帶有XMLBeans的類,並將它們打包到jar文件中。那麼我已經將該jar添加到eclipse中的項目類路徑中,並且所有內容都編譯並運行正常。 我建立從我的項目一個獨立的jar文件與Maven,並再次構建成功,但是當我嘗試運行它,我得到這個錯誤:使用XmlBeans生成的類時出錯

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.<clinit>(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創建的罐子,我如何告訴maven將它添加到它從我的項目創建的jar中?

回答

3

在你生成的jar文件中,確保你已經包含了從你的xmlbeans生成的類文件。

從堆棧跟蹤:

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

它表明,在編譯時所需的類文件在類路徑,但你建的jar這些文件丟失。

檢查你的jar文件,看看這些類是否存在。

編輯:由於每個問題轉述

爲建設罐子在Maven的依賴條件使用jar-with-dependencies選項,example

兩個很好的參考:

  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

+0

我已經迴避了我的問題,以更好地解釋我需要的東西 – Tomer 2011-12-15 11:50:14

3

請在下面添加標籤在pom.xml中,你並不需要一個主類。西港島線的錯誤去

 <!-- 
      this tells maven to copy the openejb-javaagent jar into your target/ 
      directory 
     --> 
     <!-- where surefire can see it --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <id>copy</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.apache.openejb</groupId> 
           <artifactId>openejb-javaagent</artifactId> 
           <version>3.0-beta-2</version> 
           <outputDirectory>${project.build.directory}</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    <resources> 
     <resource> 
      <directory>target/generated-sources/axis2/wsdl2code/resources</directory> 
     </resource> 
     <resource> 
      <directory>target/generated-sources/xmlbeans/resources</directory> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
</build> 
4

當你有這種錯誤 由WSDL2Java的生成沒有被放置在你的classpath中爲了避免這種錯誤的TypeSystemHolder.class的。

請從「resource/schemaorg_apache_xmlbeans/system/s68C41DB812F52C975439BA10FE4FEE54」文件夾複製TypeSystemHolder.class。

並粘貼TypeSystemHolder.class文件到你的classpath文件夾(建/班/ schemaorg_apache_xmlbeans /系統/ s68C41DB812F52C975439BA10FE4FEE54)文件夾

4

雖然做的WSDL2Java一個名爲資源將被創建。將資源下呈現的schemaorg_apache_xmlbeans複製到項目的類路徑中。這應該是修復。

0

提取您想在其中包含schemaorg_apache_xmlbeans文件夾的jar文件。 複製schemaorg_apache_xmlbeans提取文件夾中的文件夾(jar提取結果)。 在提取的文件夾中打開命令提示符。

使用jar cf命令再次創建jar。例如jar cf test.jar *, 以包括所有文件夾。

部署該jar。

相關問題