linux - Intellij IDEA 2017.2 无法在 Linux Mint 18 上添加 openjk 9

标签 linux intellij-idea openjdk java-9 intellij-idea2017

我在 Linux Mint 18.2 上使用 Intellij IDEA 2017.2.5 并尝试添加新的 openjdk-9 SDK 但 IDEA 不接受 openjdk 9 作为有效的 JDK:

Intellij claims about SDK home

我已经使用 ppa 标准存储库中的 apt-get 安装了我所有的 SDK。
这是我的 update-alternatives --config java/javac 输出:

update-alternatives --config java/javac

尽管 Intellij 声明它将支持 JDK 9 here , 但它似乎至少与 opensdk-9 还不完全兼容。
也许重构 SDK 目录并删除“jre”文件夹会误导 IDEA 找到 SDK 9 主文件夹。

知道为什么 Intellij IDEA 声称“所选目录不是 JDK 的有效目录”吗?

最佳答案

“ Ubuntu PPA for OpenJDK”目前有非常老的 openjdk-9 (9~b115-1ubuntu1)。
因此 IDEA 不将其识别为有效的 SDK。
我删除了当前安装的版本:

sudo apt-get remove '^openjdk-9.*'

然后我从 launchpad build archive 下载了更新的 .deb build(9~b181) 文件,包括 jre、jre-headless、... .

sudo dpkg -i openjdk-9-jre-headless_9_b181-4_amd64.deb  
             openjdk-9-jre_9_b181-4_amd64.deb 
             openjdk-9-jdk-headless_9_b181-4_amd64.deb 
             openjdk-9-jdk_9_b181-4_amd64.deb

只需在一行中执行上述命令,换行符是为了更好的可读性。

忽略任何错误提示:

"Package libpng16-16 is not installed."

接下来执行以下操作:

  sudo apt-get install -f

现在,在安装了这个 openjdk-9 版本之后,IDEA 对 SDK home 很满意。

谢谢 @y.bedrov对于他有用的评论。

更新: 但是,此解决方案使您能够在提到的 IDEA 版本 (2017-2) 中声明 openjdk-9,但您无法在 IDEA 本身中编译任何类。 您只能使用 elder jdk 编译您​​的应用程序并使用 openjdk-9 运行它。还有一个表明此 here 的问题.

在较新的 IDEA 版本中(我已经测试过 2017.3),这个 openjdk 构建不再被允许用作新的 SDK,参见 this issue .

简短的原因是 Debian 软件包中的一个问题,其中包含错误编译的 lib/jrt-fs.jar 文件。

See this Answer for more information

关于linux - Intellij IDEA 2017.2 无法在 Linux Mint 18 上添加 openjk 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46563992/

相关文章:

java - 将 RHEL 从 7.3 升级到 7.4 : ArrayIndexOutOfBoundsException in sun. font.CompositeStrike.getStrikeForSlot

Android Studio Java错误

java - Ant 失败 : Exception in thread “main” java. lang.NoClassDefFoundError org/apache/tools/ant/launch/Launcher

linux - 如何将 64 位 .deb 文件转换为 32 位 .deb 文件

linux - bash 脚本杀死竞争条件

java - 无法修改 Intellij 2016 中的文件

java - 编译时不断报java : invalid source release: 1. 9错误

java - 如何在Eclipse中调试openjdk 9(主要是hotspot)源码?

linux - 如何在 Linux 上添加 Actionscript 3 fl.controls (UIScrollBar)

c - 系统安全性如何(("/bin/ls");