程序用JDK8编译。我想用 JDK11 运行代码(无需用 JDK11 重新编译代码)。
问题是程序使用来自JDK8 tools.jar的类(现在在jdk11的jdk.compiler模块中的类,tools.jar被添加到类路径中)。在 JDK11 中,工具没有单独的 jar,而是 JDK11 的一部分。所以存在类冲突(类在 JDK11 中,也在类路径上的 tools.jar 中)。JDK11 中的类优先于 tools.jar 中的类。有没有可能告诉JVM它应该使用tools.jar中的类而不是JDK11中的类。
更新 正如我所说,我无法使用 JDK11 重新编译代码。我知道Java9中引入的Java模块系统。我要问的是是否有可能告诉 JVM 忽略 JDK11 模块 jdk.compiler 中的类,而不是使用他在类路径中找到的类。