要使用 JDK SE 8 编译的 JAXB 项目,但也必须 运行 在 JRE 11 上
JAXB project to be compiled with JDK SE 8 but has to run also on JRE 11
我有一个 Java 程序,我在 Java 1.8 中编译,因为它有 - 在其他人之间 - 因为许多用户只有 JRE 1.8。在那个程序中,我经常使用 javax.xml.bind.* 来编组和解组 XML。为了在 JRE 9-10 上帮助用户 运行,我还提供了一个 shell 脚本,它使用 -add-modules
参数调用 java。对于拥有 Java 11+(且未安装以前的 Java 版本)的用户,这将不起作用,对吗?
所以我想到将 JAXB(或 EclipseLink Moxy)与我的程序捆绑在一起,并仍然使用 JDK8(使用 Eclipse IDE)对其进行编译。所以我 运行s 在 Java 8 上并且仍然在 Java 11+。那行得通吗?
谢谢!
这里有一个解决方案,将这些依赖项添加到您的 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 中编译。
感谢您的评论和回答!
我终于搞定了运行ning,虽然还不完善。这就是我所做的:
- 已在此处下载 Jakarta JAXB 2.3.2:maven
- 解压后放入我的项目目录
- 在 Eclipse IDE 2020-6 中,我编辑了项目的属性 (Cmd+I):
- 在主题“Java 构建路径”下,我添加了 3 个带有“添加外部 JAR”的 jar:jaxb-impl.jar,jakarta.xml.bind-api.jar和 jakarta.activation.jar
- 我之前明显忘记的部分:同样在“订购和导出”下,我检查了 3 个 JAR。
为了测试结果,我在“Run/Debug”下告诉 Eclipse IDE,用 JRE 12 将“JRE”注册到 运行 我的主要 class。
这对我有用。
我有一个 Java 程序,我在 Java 1.8 中编译,因为它有 - 在其他人之间 - 因为许多用户只有 JRE 1.8。在那个程序中,我经常使用 javax.xml.bind.* 来编组和解组 XML。为了在 JRE 9-10 上帮助用户 运行,我还提供了一个 shell 脚本,它使用 -add-modules
参数调用 java。对于拥有 Java 11+(且未安装以前的 Java 版本)的用户,这将不起作用,对吗?
所以我想到将 JAXB(或 EclipseLink Moxy)与我的程序捆绑在一起,并仍然使用 JDK8(使用 Eclipse IDE)对其进行编译。所以我 运行s 在 Java 8 上并且仍然在 Java 11+。那行得通吗?
谢谢!
这里有一个解决方案,将这些依赖项添加到您的 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 中编译。
感谢您的评论和回答!
我终于搞定了运行ning,虽然还不完善。这就是我所做的:
- 已在此处下载 Jakarta JAXB 2.3.2:maven
- 解压后放入我的项目目录
- 在 Eclipse IDE 2020-6 中,我编辑了项目的属性 (Cmd+I):
- 在主题“Java 构建路径”下,我添加了 3 个带有“添加外部 JAR”的 jar:jaxb-impl.jar,jakarta.xml.bind-api.jar和 jakarta.activation.jar
- 我之前明显忘记的部分:同样在“订购和导出”下,我检查了 3 个 JAR。
为了测试结果,我在“Run/Debug”下告诉 Eclipse IDE,用 JRE 12 将“JRE”注册到 运行 我的主要 class。
这对我有用。