Intellij 在编译期间看不到一些非公共的 JDK 9 类

我有一个项目以前使用JDK 8.0,现在迁移到JDK 9。该项目尚未模块化。

修复了关闭对私有JDK API的访问权限的所有问题,并且我能够使用maven,1.8语言级别和JDK 9从命令行构建项目。

Intellij Idea根本没有突出任何问题,JDK 9设置为项目SDK,但是如果我尝试在Idea本身内部构建项目 - 我会在idea控制台中获得编译问题:

Information:javac 9 was used to compile java sources
Error:(5, 16) java: package sun.misc does not exist
Error:(22, 19) java: cannot find symbol
  symbol:   class Unsafe
  location: class <...>.UnsafeAccessor

因此,该项目现在使用JDK 9在CMD中构建得很好,这个错误并没有太大的意义,因为sun.misc.Unsafe在JDK 9中存在并且是公开的,Idea本身没有突出显示任何内容,所以它明白一切都存在。

什么可能导致 Idea 内部的项目构建出现问题?

有关 IDEA 版本的信息:

IntelliJ IDEA 2017.2.5

内部版本 #IU-172.4343.14,构建于 2017 年 9 月 26 日

JRE: 1.8.0_152-发布-915-b12 x86_64

JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

Mac OS X 10.13


答案 1

对我来说,解决方案是在IDEA的首选项,编译器,Java编译器部分禁用“使用'--release'选项进行交叉编译”(Java 9及更高版本)的选项。JDK 11, IDEA 2020.1.


答案 2

好的,在我修复了所有实际问题之后,例如在中添加模块等 - 之后,我能够在cmd和Idea中使用语言级别9和JDK 9构建项目。此外,我还能够在cmd和Idea中构建具有8级语言和JDK 8的相同代码库。我能够用JDK 9和语言级别8在cmd / mvn中构建它,但是在Idea中 - 我收到了很多错误,例如“package sun.misc不存在”。在修复并检查所有这些之后,对我来说,它看起来像一个纯粹的Idea错误。--add-modules


推荐