Gradle - класс не загружен: org.docx4j.jaxb.Context

У меня был проект maven со старыми зависимостями docx4j, и я хотел обновить его до java 9. Во время обновления я изменил свой проект с maven на gradle.

Итак, теперь у меня есть проект Gradle в IntelliJ с этими зависимостями:

dependencies {
    implementation('commons-io:commons-io:2.6')
    implementation('javax.xml.bind:jaxb-api:2.4.0-b180725.047')
    implementation('org.docx4j:docx4j:6.0.1')
    implementation('org.docx4j:docx4j-ImportXHTML:6.0.1')
    implementation('org.docx4j:docx4j-export-fo:6.0.1')
    testImplementation('junit:junit:4.12')
}

строить работает, но если я хочу открыть файл .docx, с помощью Docx4J.load (...) или WordprocessingMLPackage.load (...) он выдает исключение RuntimeException. В режиме отладки я вижу это сообщение: Класс не загружен: org.docx4j.jaxb.Context

Этот файл Context.java имеет такой статический блок кода:

static {
    ...
}

Я думаю, что это ошибка, связанная с gradle, потому что я создал новый проект maven с тем же кодом и зависимостями, что и проект gradle, и он работает.

Есть ли какое-то решение для этого, или я должен использовать maven в будущем?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На https://stackoverflow.com/a/51235096/1031689 есть ответ, специфичный для Gradle

Или вместо этого «добавить модуль», см. Например:

Или mac java 9 gradle ClassNotFoundException: javax.xml.bind.JAXBElement при создании

Спасибо за ваш ответ. Первая ссылка мне подошла. Я добавил еще 2 зависимости (jaxb-core и jaxb-impl), и теперь он работает. Я не знаю, почему эти зависимости не нужны для maven.

Adam Selyem 05.09.2018 10:43

Большой. Если вы хотите внести свой рабочий файл Gradle, я добавлю его в docx4j :-)

JasonPlutext 05.09.2018 11:12

Конечно. Я предпочитаю стеклянную рыбу солнцу, поэтому у меня есть перечисленные выше зависимости плюс следующие: org.glassfish.jaxb: jaxb-core: 2.3.0.1 org.glassfish.jaxb: jaxb-runtime: 2.3.0.1

Adam Selyem 07.09.2018 11:28

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