由于新的文件夹结构,在Linux上的Intellij IDEA中将Java 9正确设置为SDK

2022-09-01 13:15:19

在你把我写下来之前,请考虑这些都不是我问题的答案:


在 IntelliJ IDEA 2017.2.6 中,尝试将 JDK9 添加为 SDK 通过,但由于类路径最终为空而无法正常工作。重现步骤:

  1. 打开“添加新的 SDK 对话框”
    (转到项目设置>项目>项目 SDK >新建 JDK >)
  2. 选择 JDK 9
    select jdk dialog
  3. 通过,但是如果您在 SDK 下查看> JDK9 类路径为空,并且由于找不到基类,您的代码出错。见图:
    no classpaths

在 IntelliJ IDEA 2017.3 EAP 中,您会收到有关找不到 JDK 类的错误。见下图:

  1. 打开“添加新的 SDK 对话框”
    (转到项目设置>项目>项目 SDK >新建 JDK >)
  2. 选择 JDK 9
    select jdk dialog
  3. 应通过,但产生错误弹出窗口
    jdk error popup

使用 jdk9 的 HelloWorld 示例的命令行编译按预期工作。

编辑:发现一个几乎重复的:Intellij IDEA 2017.2无法在Linux Mint 18上添加openjk 9主要区别:

  • Linux版本:他们使用Mint 18,我使用Debian Stretch。
  • OpenJDK是撰写本文时存储库的最新版本:9~b181-4~bpo9+1。即使是相同的版本,它仍然不适用于我的情况。

编辑:另一个可能的副本:intellij想法看不到java 9标准类

我不明白评论中的答案。尝试为JDK(9和1.9)设置不同的名称,但它仍然没有显示模块而不是类路径,并且类路径仍然是空的。


答案 1

当前的 debian 二进制软件包 openjdk-9-jre-headless 9~b181-4 包含编译不正确的 lib/jrt-fs.jar 文件。
idea youtrackubuntu 启动板上都有 2 个单独的问题。

如下图所示:

可能的原因:
lib/jrt-fs.jar中的类是由Java 9编译的,选项为“-source 8”/“target 8”。它们应该使用“--release 8”选项进行编译(或由Java 8编译)

一个临时的解决方法可能是将 /usr/lib/jvm/java-9-openjdk-amd64/lib/jrt-fs.jar替换为 Oracle JDK 中的那个。
您也可以尝试使用建议的选项“--release 8”重新编译openjdk-9源代码。

无论如何,我建议在上面的链接上投票解决这个问题,以吸引开发团队的更多关注。


答案 2

现在使用Oracle Java而不是OpenJDK。您可以通过WebUpd8的存储库将其拉入。

sudo add-apt-repository ppa:webupd8team/java &&
sudo apt-get update &&
sudo apt-get install oracle-java9-installer

看起来这不会与OpenJDK一起使用,所以如果你想玩最新和最伟大的Java,这将是现在的方法。否则,从我所看到的,你已经正确地完成了这项工作,一旦这个问题得到实际修复,它就会正常工作。


推荐