Как запустить XJC в Java 9+ - PullRequest
       103

Как запустить XJC в Java 9+

0 голосов
/ 03 октября 2018

Я скачал JAXB 2.3.0.1 и JavaBeans Activation Framework (JAF) 1.2.0 (основываясь на ответе на этот вопрос ).Я извлек все файлы JAR в один и тот же каталог, а затем выполнил в этом каталоге следующую команду:

java -cp jaxb-api.jar;jaxb-core.jar;jaxb-impl.jar;javax.activation-1.2.0.jar
    -jar jaxb-xjc.jar [xjc-arguments]

Сбой приведенной выше команды выдает следующее сообщение:

java.lang.NoClassDefFoundError: javax / активации / DataSource...Причина: java.lang.ClassNotFoundException: javax.activation.DataSource

Я проверил, что класс существует в файле javax.activation-1.2.0.jar.Я также попытался использовать новые (для Java 9+) аргументы -p . --add-modules java.activation, но это не удается из-за следующего сообщения об ошибке:

Произошла ошибка во время инициализации загрузочного уровняjava.lang.modules.ResolutionException: модули jaxb.core и jaxb.impl экспортируют пакет com.sun.xml.bind.marshaller в модуль java.activation

Если я попробую комбинацию -cpи --add-modules, я получаю другую ошибку инициализации загрузочного слоя.Кто-нибудь знает, как заставить XJC работать на платформе Java 9+?

Мой конкретный пример использования - OpenJDK 11 для Windows.

1 Ответ

0 голосов
/ 03 октября 2018

Основная проблема заключалась в том, что исполняемый файл java не поддерживает одновременное указание аргументов командной строки -cp и -jar.Спасибо Алану Бейтману за эту информацию!

Следовательно, правильный способ заставить это работать, используя следующую команду:

java -cp javax.activation-1.2.0.jar;jaxb-xjc.jar com.sun.tools.xjc.XJCFacade
    [xjc-arguments]

Чтобы упростить запуск XJC, откройте bin / xjc.bat (извлечено из jaxb-ri-2.3.0.zip) и измените командную строку в соответствии с приведенным выше вызовом.

...