我一直试图将Java 8桌面应用程序移植到Java11。我对Java 9及之后的版本与Java 8有何不同有较高的了解。例如:支持模块化,JDK是模块化的,没有单独的JRE。
总体而言,据我了解,移植到Java 11的过程包括以下步骤:
jdeps -jdkinternals
工具。Step 1
中找到的依赖项可以通过两种方式处理:jdeps
工具会给我替换包以供使用。jdeps --list-deps
来了解要包含在运行时中的JDK软件包。 jlink
来为应用程序构建运行时。我理解这个过程是否正确?我可能会遇到什么惊喜?
更新:
下面的评论说,可能不需要使用jlink的自定义运行时。但是,我们在使用常规Java 8运行时时遇到问题。在下面发布详细信息以获取更多背景信息。
我们一直试图移植的项目是Arduino,并且正在使用Mac OS来完成。 Arduino使用Ant
进行构建。 build.xml
是here。我们最初所做的是将JAVA_HOME更改为指向Java 11并使用ant dist进行编译。由于某种原因,该应用程序无法在Java 11上编译,直到在build.xml的第69行末尾删除../为止。之后,应用程序在build.xml的第512行给出的路径上编译并提供了可执行文件。但是,当我们尝试运行可执行文件时,它会显示未找到错误Java Runtime
。