JAXB & java .mail Java 11: проблемы с модулем - PullRequest
0 голосов
/ 26 марта 2020

Когда я конвертировал приложение, которое использует jaxb & java .mail, от java 8 до java 11, у меня было много проблем с модулем, которые казались неразрешимыми.

Мой build.gradle включен :

compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

Ошибки модуля, которые я получил, включены:

the unnamed module reads package javax.activation from both java.activation and activation

Я пробовал это, но это не работало с той же ошибкой:

compile (group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1') {
    exclude group: 'javax.activation', module: 'activation'
}
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

И Я попытался это, что также не удалось:

compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
compile (group: 'javax.mail', name: 'mail', version: '1.4.7') {
    exclude group: 'javax.activation', module: 'activation'
}

Ошибка была:

java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory

Также попытался использовать в gradle с различными операторами исключения, которые все так или иначе потерпели неудачу:

compile (group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1') 
compile (group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0.1') 
compile (group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0.1') 

Также получена ошибка времени выполнения:

class not found com.sun.activation.registries.LogSupport

1 Ответ

0 голосов
/ 26 марта 2020

Решение

В конце концов я обнаружил, что использование glassfi sh .jaxb и jakarta.mail сработало.

Мой build.gradle включал:

compile(group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.2') {
    exclude group: 'jakarta.activation', module: 'jakarta.activation-api'
}
compile group: 'com.sun.mail', name: 'jakarta.mail', version: '1.6.5'

Информация о моем модуле. java в комплекте:

requires java.xml.bind;
requires jakarta.mail;
requires com.sun.xml.bind;    // needed this for jlink

Надеюсь, это поможет.

...