将Java 8应用程序移植到Java 11

时间:2018-11-14 19:40:03

标签: java java-8 arduino-ide java-11

我一直试图将Java 8桌面应用程序移植到Java11。我对Java 9及之后的版本与Java 8有何不同有较高的了解。例如:支持模块化,JDK是模块化的,没有单独的JRE。

总体而言,据我了解,移植到Java 11的过程包括以下步骤:

  1. 找出Java 9或更高版本中不再支持的依赖项。为此,我们使用Java 8 jdk中的jdeps -jdkinternals工具。
  2. Step 1中找到的依赖项可以通过两种方式处理:
    a。。如果依赖包在Java 9或更高版本中仍然存在,但只是封装了,请使用--add-exports命令使JDK导出这些包。 b。。如果从Java中删除了依赖包,我将不得不更改应用程序的代码以使用替换包。 jdeps工具会给我替换包以供使用。
  3. 一旦解决了不受支持的依赖性问题,我们将在所有jar(由我们的程序生成并由我们的程序使用)上使用jdeps --list-deps来了解要包含在运行时中的JDK软件包。
  4. 列出依赖项后,我们将提供Java 11的jlink来为应用程序构建运行时。

我理解这个过程是否正确?我可能会遇到什么惊喜?


更新:

下面的评论说,可能不需要使用jlink的自定义运行时。但是,我们在使用常规Java 8运行时时遇到问题。在下面发布详细信息以获取更多背景信息。

我们一直试图移植的项目是Arduino,并且正在使用Mac OS来完成。 Arduino使用Ant进行构建。 build.xmlhere。我们最初所做的是将JAVA_HOME更改为指向Java 11并使用ant dist进行编译。由于某种原因,该应用程序无法在Java 11上编译,直到在build.xml的第69行末尾删除../为止。之后,应用程序在build.xml的第512行给出的路径上编译并提供了可执行文件。但是,当我们尝试运行可执行文件时,它会显示未找到错误Java Runtime

0 个答案:

没有答案