问题描述
我在ubuntu 18.04系统中安装了JDK 8,现在我想使用this将其升级到JDK 11。我只想知道这是否会造成任何问题。升级时会删除旧版本吗(实际上我希望自己删除旧版本)?
解决方法
执行此操作以在Ubuntu上卸载先前版本的openJDK
sudo apt-get remove openjdk
要删除所有配置文件和依赖项。
sudo apt-get purge --auto-remove openjdk*
然后安装openJDK 11
sudo apt-get install openjdk-11-jdk
,
通常,升级将允许运行为Java 8编译的代码;但是,有一些警告。
包含项目JigSaw意味着“到达”方法的访问规则已稍有更改。它们在Java 8和Java 11之间几乎兼容。差异将在以下时间显示:
- 您尝试使用com.sun。*软件包之一(或任何其他非公共api入口点)。
- 您尝试在非公共API入口点上使用反射。
- 您更改启动以使用模块,这将禁用Java 8“默认”模块处理。
简而言之,这几乎是一个简单的升级。当代码正在执行不应做的事情时,或者当您的代码不是为模块设计的,而您的某些运行时代码是为模块设计的时,这些问题就会发挥作用。
如果您可以访问源代码,则可以通过添加模块规范来解决很多问题。但是,这可能需要您了解模块化(这很容易,但是仍然是一个障碍)。