Я загрузил 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 / activation / 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.
a:javax.activation g:com.sun.activation
и убедиться, что указаны правильные имена jar-файлов. Поскольку классDataSource
в журналах выглядит как прямо здесь в артефакте. - person Naman   schedule 03.10.2018jaxb-api
версии 2.3.1, тогда вам больше не нужно явно включать JAF. - person Jesper   schedule 05.10.2018