Ошибка при использовании сгенерированных классов XmlBeans - PullRequest
10 голосов
/ 15 декабря 2011

Я сгенерировал классы с XMLBeans из файла xsd и упаковал их в файл jar.затем я добавил этот jar в classpath проекта в eclipse, и все компилируется и работает нормально.Я создал автономный файл JAR из своего проекта с Maven, и снова сборка прошла успешно, но когда я пытаюсь запустить его, я получаю эту ошибку:

 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 добавить его в банку, которую он создает из моего проекта?

Ответы [ 5 ]

7 голосов
/ 16 декабря 2013

При выполнении WSDL2Java будет создан каталог с именем resources. Скопируйте schemaorg_apache_xmlbeans, который представлен в ресурсах, в classpath вашего проекта. Это должно быть исправление.

4 голосов
/ 16 января 2013

При возникновении такого рода ошибки TypeSystemHolder.class, сгенерированный WSDL2Java, не помещается в ваш путь к классам во избежание этой ошибки.

Пожалуйста, скопируйте TypeSystemHolder.class из "resource / schemaorg_apache_xmlbeans / system /Папка s68C41DB812F52C975439BA10FE4FEE54 ".

и вставьте файл TypeSystemHolder.class в вашу папку classpath (build / classes / schemaorg_apache_xmlbeans / system / s68C41DB812F52C975439BA10FE4FEE54) *

4 голосов
/ 15 декабря 2011

В вашем сгенерированном jar-файле убедитесь, что вы включили файлы классов, сгенерированные из ваших xmlbeans.

Из трассировки стека:

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

предполагает, что во время компиляции необходимые файлы классов находятся в classpath, но в вашем встроенном фляге эти файлы отсутствуют.

Проверьте файл JAR, чтобы увидеть, присутствуют ли эти классы.

РЕДАКТИРОВАТЬ: Согласно перефразированному вопросу

Для построения jar с зависимостями в Maven используйте параметр 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

3 голосов
/ 04 декабря 2012

Пожалуйста, добавьте тег ниже в 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>
0 голосов
/ 07 июля 2017

Извлеките банку, в которую вы хотите включить папку schemaorg_apache_xmlbeans. Скопируйте папку schemaorg_apache_xmlbeans в извлеченную папку (результат извлечения jar). Откройте командную строку в извлеченной папке.

сделать jar снова, используя команду jar cf. например, jar cf test.jar *, включить все папки.

Разверните эту банку.

...