Проект JAXB должен быть скомпилирован с JDK SE 8, но также должен работать на JRE 11 - PullRequest
0 голосов
/ 06 августа 2020

У меня есть программа Java, которую я компилирую в Java 1.8, потому что у нее есть - среди других - потому что у многих пользователей есть только JRE 1.8. В этой программе я довольно часто использую javax. xml .bind. * Для маршаллинга и демаршаллинга XML. Чтобы помочь пользователям запускать его в JRE 9-10, я также предоставил сценарий оболочки, который вызывает java с аргументом -add-modules. Для пользователей, у которых установлена ​​Java 11+ (и не установлена ​​предыдущая версия Java), это не сработает, не так ли?

Итак, я подумал об объединении JAXB (или EclipseLink Moxy) с моей программой и по-прежнему скомпилируйте его с помощью JDK8 (с Eclipse IDE). Так что я работаю на Java 8 и все еще на Java 11+. Это сработает?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 августа 2020

Спасибо за ваши комментарии и ответы!

Я наконец-то запустил его, хотя он еще не идеален. Вот что я сделал:

  1. скачал Jakarta JAXB 2.3.2 здесь: maven
  2. распаковал его и поместил содержимое в каталог моего проекта
  3. в Eclipse IDE 2020-6, я редактировал свойства проекта (Cmd + I):
  4. Под топом c «Java Build Path», я добавил 3 jar-файла с помощью «Добавить внешний JAR ": jaxb-impl.jar, jakarta. xml .bind-api.jar и jakarta.activation.jar
  5. Часть, которую я явно забыл раньше: также в разделе« порядок и экспорт »я проверил, что 3 JAR.

Чтобы проверить результат, я сказал Eclipse IDE в разделе «Запуск / отладка», зарегистрируйте «JRE» для запуска моего основного класса с JRE 12.

Это сработало для мне.

0 голосов
/ 06 августа 2020

здесь решение: добавьте эти зависимости в ваш pom. xml (если вы используете) maven:

   <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${jaxb.api.version}</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>${jaxb.api.version}</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>${jaxb.api.version}</version>
    </dependency>

, и код будет компилироваться в обеих версиях java 8 и 11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...