Плагин Jaxb Xew в Maven JAX WS

mvn generate-sources
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder          org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBu
ilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building epay_api 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jaxws-maven-plugin:2.3:wsimport (wsimport-generate-sources) @ api ---
[INFO] Processing: file:/C:/service.wsdl
[WARNING] Using platform encoding (Cp1256), build is platform dependent!
[INFO] jaxws:wsimport args: [-keep, -s, C:\api\src\main\java, -d, C:\api\target\classes,     -verbose, -Xnocompile, -B-debug, -B-no-header, -B-Xxew, -B-Xx
ew:instantiate lazy, -B-Xxew:delete, -B-extension, -B-b C:\api/src/main/res
ources/jaxb_binding.xml, "file:/C:/api/src/main/resources/service.w
sdl"]
[DEBUG] JAXB Compilation started (XmlElementWrapperPlugin.onActivated):
[DEBUG]   buildId         : 2.2.7
[DEBUG]   targetDir       : .
[DEBUG]   defaultPackage  : null
[DEBUG]   defaultPackage2 : null
[DEBUG]   debug           : true
[DEBUG]   verbose         : true
[DEBUG]   quiet           : false
[DEBUG]   grammars        : 0
[DEBUG] Argument[0] = -Xxew
[DEBUG] Argument[0] = -Xxew:instantiate
[DEBUG] Argument[0] = -Xxew:delete
parsing WSDL...


Exception in thread "main" java.lang.ClassCastException: java.lang.NoSuchMethodError     cannot be cast
to java.lang.Exception
        at org.jvnet.jax_ws_commons.jaxws.Invoker.main(Invoker.java:87)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.593 s
[INFO] Finished at: 2014-04-04T04:06:54+04:00
[INFO] Final Memory: 7M/216M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport     (wsimport-ge
nerate-sources) on project epay_api: Mojo failed - check output -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the     following arti
cles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Вот мой простой pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>api</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>

<build>

    <plugins>
        <plugin>
            <groupId>org.jvnet.jax-ws-commons</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>wsimport-generate-sources</id>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <configuration>
                        <verbose>true</verbose>
                        <sourceDestDir>src/main/java</sourceDestDir>
                        <wsdlDirectory>src/main/resources/</wsdlDirectory>
                        <wsdlLocation>src/main/resources/*</wsdlLocation>
                        <xjcArgs>
                            <xjcArg>-debug</xjcArg>
                            <xjcArg>-no-header</xjcArg>

                            <xjcArg>-Xxew</xjcArg>
                            <xjcArg>-Xxew:instantiate lazy</xjcArg>
                            <xjcArg>-Xxew:delete</xjcArg>

                            <xjcArg>-extension</xjcArg>
                            <xjcArg>-b ${basedir}/src/main/resources/jaxb_binding.xml</xjcArg>
                            <xjcArg>-XJsr303Annotations</xjcArg>
                            <!-- <xjcArg>-Xfluent-api</xjcArg> -->
                            <!-- <xjcArg>-Xvalue-constructor</xjcArg> -->
                        </xjcArgs>

                    </configuration>


                </execution>

            </executions>
            <dependencies> 
                <dependency>
                    <groupId>com.github.jaxb-xew-plugin</groupId>
                    <artifactId>jaxb-xew-plugin</artifactId>
                    <version>1.2</version>
                </dependency>

                <dependency>
                    <groupId>com.github.krasa</groupId>
                    <artifactId>krasa-jaxb-tools</artifactId>
                    <version>1.1</version>
                </dependency>
            </dependencies>
        </plugin>

    </plugins>

</build>

И ключ -e -X ничего не говорит об этой ошибке

"main" java.lang.ClassCastException: java.lang.NoSuchMethodError не может быть приведен к.jax_ws_commons.jaxws.Invoker.main(Invoker.java:87)

Это самая базовая конфигурация, которую я пробую.

C: \ api> java -version версия java "1.7.0_51" Java(TM) среда выполнения SE (сборка 1.7.0_51-b13) 64-разрядная серверная виртуальная машина Java HotSpot(TM) (сборка 24.51-b03, смешанный режим)

C: \ api> mvn -version Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T21: 37: 52 + 04: 00) Maven home: C: \ Program Files \ apache-maven-3.2.1 \ bin.. Версия Java: 1.7.0_51, поставщик: Oracle Corporation Дом Java: C:\Program Files\Java\jdk1.7.0_51\jre Язык по умолчанию: en_US, кодировка платформы: Cp1256 Имя ОС: "windows 7", версия: "6.1", арка: "amd64", семья: "windows"

Что не так с моей конфигурацией? Спасибо за любую помощь, спасибо

5 ответов

Решение

В соответствии с примерами плагина jaxb xew вам необходимо использовать более новую версию плагина jaxws maven. В примере используется версия 2.3.1-b03, которая также работает в моем проекте. Старые версии этого плагина, вероятно, скомпилированы с библиотекой, несовместимой с плагином jaxb xew.

Если вы посмотрите примерную историю кода, вы также найдете конфигурацию для плагина jaxws maven версии 2.2.

Обход из https://java.net/jira/browse/JAX_WS_COMMONS-129 помог мне:

    <configuration>
         <vmArgs>
            <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
         </vmArgs>
    </configuration>

Для чего это стоит: у меня была такая же ошибка - при использовании Maven 3.2.2 и jaxws-maven-plugin был установлен на 2.3. Это перестало работать с проблемой:

Исключение в потоке "main" java.lang.ClassCastException: java.lang.NoSuchMethodError не может быть приведено к java.lang.Exception

Читая темы и сообщения Stack Overflow, казалось, что переход на новую версию плагина поможет. Перешел к 2.3.1-b01 до 2.3.1-b03. Это изменило проблему и теперь приводит к:

java.lang.NoClassDefFoundError: org / sonatype / aether / * Причина: java.lang.ClassNotFoundException: org.sonatype.aether.*

Кажется, что есть хорошо документированная проблема с 2.3.1-b03, работающим с любым выпуском Maven, который>=3.1. Вы можете найти больше информации, выполнив поиск (там есть JIRA и отчеты об ошибках) или начните здесь.

В итоге я вернулся к 2.2. для плагина и это работало без проблем.

Попробуйте добавить этот плагин в ваш pom.xml

<plugin>
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <!-- Needed with JAXP 1.5 -->
        <vmArgs>
            <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
        </vmArgs>
    </configuration>
</plugin>

Я получил ту же ошибку:

Не удалось выполнить цель org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (по умолчанию) в проекте birst-soap-client: сбой Mojo - проверить вывод.

Но причина кроется в Дженкинсе. В имени задания Jenkins есть несколько пробелов ("file:/data/jenkins/workspace/Dpm-Flyer-Core%20-%20Release%20Tag+Nexus/...), и это привело к ошибке при выполнении"jaxws:wsimport". Но, как ни странно, Дженкинс перечисляет это как [INFO] вместо [ОШИБКА]. После удаления пробелов в имени задания Дженкинса. Сборка выполнена успешно. Пример приведен ниже.

[INFO] [INFO] Обработка: файл: / data / jenkins / workspace / Dpm-Flyer-Core% 20-% 20Release% 20Tag + Nexus / третья сторона /birst-soap-client/src/main/resources/wsdl/CommandWebService.5.19.wsdl [INFO] [ПРЕДУПРЕЖДЕНИЕ] При использовании кодировки платформы (UTF-8) сборка зависит от платформы! [INFO] [INFO] jaxws:wsimport args: [-keep, -s, /data/jenkins/workspace/Dpm-Flyer-Core - метка релиза + Nexus / третье лицо / birst-мыло-клиент / цель / генерируемые источники /wsimport, -d, /data/jenkins/workspace/Dpm-Flyer-Core - Release Tag+Nexus/ Thirdparty/ Birst-мыло-клиент /target/classes, -verbose, -Xnocompile, -B-XautoNameResolution, -p, com.birst, -target, 2.0, "file:/data/jenkins/workspace/Dpm-Flyer-Core%20-%20Release%20Tag+Nexus/thirdparty/birst-soap-client/src/main/resources/wsdl/CommandWebService.5.19.wsdl"] [INFO] каталог не найден: / data / jenkins / workspace / Dpm-Flyer-Core

Другие вопросы по тегам