将Java8应用程序移植到Java11
我一直在尝试将Java8桌面应用程序移植到Java11。我对Java9及其后版本与Java8的区别有一个很高的认识。例如:支持模块化,JDK是模块化的,没有单独的JRE 总的来说,我的理解是,移植到Java 11的过程包括以下步骤:将Java8应用程序移植到Java11,java,java-8,arduino-ide,java-11,Java,Java 8,Arduino Ide,Java 11,我一直在尝试将Java8桌面应用程序移植到Java11。我对Java9及其后版本与Java8的区别有一个很高的认识。例如:支持模块化,JDK是模块化的,没有单独的JRE 总的来说,我的理解是,移植到Java 11的过程包括以下步骤: 了解Java 9或更高版本不支持哪些依赖项。为此,我们使用Java8JDK中的jdeps-jdkinternals工具 在步骤1中找到的依赖项可以通过两种方式处理: a.如果依赖项包在Java 9或更高版本中仍然存在,但只是被封装,那么使用--add exports
jdeps-jdkinternals
工具步骤1
中找到的依赖项可以通过两种方式处理:a.如果依赖项包在Java 9或更高版本中仍然存在,但只是被封装,那么使用--add exports命令使JDK导出这些包。 b.如果依赖项包已从Java中删除,我将不得不更改应用程序的代码以使用替换包
jdeps
工具将为我提供可使用的替换包jdep--list dep
,来了解要包含在运行时中的JDK包jlink
,为应用程序构建运行时更新: 下面的注释指出,可能不需要使用jlink的自定义运行时。然而,我们在使用普通的Java8运行时时时遇到了问题。在下面发布详细信息以了解更多上下文
我们一直在尝试移植的项目是,并且正在使用Mac OS来实现这一点。Arduino使用
Ant
构建。build.xml
是。我们最初做的是将JAVA_HOME更改为指向Java11,并使用ant dist编译它。出于某种原因,在build.xml中删除第69行末尾的../之前,应用程序不会在Java 11上编译。在此之后,应用程序按照build.xml第512行给出的路径编译并提供一个可执行文件。但是,当我们尝试运行可执行文件时,会出现错误Java运行时未找到。您有理由构建自定义运行时吗?这不是严格要求的,您仍然可以像在Java8中一样使用标准安装。您是否已经制定了分发自定义JRE的计划?@Deadron我认为我们应该创建一个自定义运行时。我们如何将Java8的运行时与Java11端口的应用程序一起使用?现在我记得,我确实尝试过使用Java8运行时。但是当我运行应用程序时(我们使用了ant run
),应用程序启动了,但出现了一个错误Java Runtime Engine not found
,这可能意味着您的框没有为ant脚本正确设置。安装过程已更改安装目录和环境变量。我们需要了解您的ant脚本的详细信息以提供进一步帮助。在jlink
步骤中,如果您的modulepath上仍有自动模块,则会有一个拦截器。我建议您一步一步地详细说明迁移过程,并尝试一步一步地解决问题。迁移过程中需要花费大量精力来理解可能依赖于依赖库/框架的更改。例如,Ant对Java11的支持。