背景
我正在将一个大型项目从 8 迁移到 OpenJDK 11.0.2。因此,我需要包含 JAXB 实现。
问题
我观察到使用 Buildship (3.0.1.v20181217-1554) 从 Eclipse 2019-03 (4.11.0) 中启动的应用程序不包含任何外部 JAR 依赖项。
这只影响启动配置,编译很好。
分析
我已将故障隔离到使用 Glassfish JAXB 实现的 2.4.0-b180725.0644 版本时。使用 2.3.1 按预期工作。
我究竟做错了什么?我怎样才能避免这个问题
笔记。现在提出https://bugs.eclipse.org/bugs/show_bug.cgi?id=548455
测试用例
构建.gradle
apply plugin: 'java'
dependencies {
compile 'log4j:log4j:1.2.17'
runtime group: "org.glassfish.jaxb", name: "jaxb-runtime", version: "2.4.0-b180725.0644"
// runtime group: "org.glassfish.jaxb", name: "jaxb-runtime", version: "2.3.1"
}
Java 测试文件
public class LaunchConfigurationIssue {
public static void main(String[] args) {
for (String each : System.getProperty("java.class.path").split(File.pathSeparator)) {
System.out.println(each);
}
}
}
使用 2.3.1 时的输出
C:\adam\git\foo\bin\main
C:\Users\adam\.gradle\caches\modules-2\files-2.1\log4j\log4j\1.2.17\5af35056b4d257e4b64b9e8069c0746e8b08629f\log4j-1.2.17.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\2.3.1\dd6dda9da676a54c5b36ca2806ff95ee017d8738\jaxb-runtime-2.3.1.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\javax.xml.bind\jaxb-api\2.3.1\8531ad5ac454cc2deb9d4d32c40c4d7451939b5d\jaxb-api-2.3.1.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\2.3.1\a09d2c48d3285f206fafbffe0e50619284e92126\txw2-2.3.1.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\3.0.7\c197c86ceec7318b1284bffb49b54226ca774003\istack-commons-runtime-3.0.7.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\org.jvnet.staxex\stax-ex\1.8\8cc35f73da321c29973191f2cf143d29d26a1df7\stax-ex-1.8.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\com.sun.xml.fastinfoset\FastInfoset\1.2.15\bb7b7ec0379982b97c62cd17465cb6d9155f68e8\FastInfoset-1.2.15.jar
C:\Users\adam\.gradle\caches\modules-2\files-2.1\javax.activation\javax.activation-api\1.2.0\85262acf3ca9816f9537ca47d5adeabaead7cb16\javax.activation-api-1.2.0.jar
使用 2.4.0-b180725.0644 时的输出
C:\adam\git\foo\bin\main