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

Dmi*_*kiy 14 java intellij-idea maven java-9 intellij-idea2017

我有一个以前使用 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
Run Code Online (Sandbox Code Playgroud)

因此,该项目现在使用 JDK 9 在 CMD 中构建良好,该错误没有太大意义,因为 sun.misc.Unsafe 在 JDK 9 中存在且公开,Idea 本身没有突出显示任何内容,因此它理解一切都存在.

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

关于IDEA构建的信息:

IntelliJ IDEA 2017.2.5

Build #IU-172.4343.14,建于 2017 年 9 月 26 日

JRE:1.8.0_152-release-915-b12 x86_64

JVM:JetBrains sro 的 OpenJDK 64 位服务器 VM

Mac OS X 10.13

mst*_*rap 13

对我来说,解决方案是在 IDEA 的首选项,编译器,Java 编译器部分中禁用选项Use '--release' option for cross-compilation'(Java 9 及更高版本)。JDK 11,IDEA 2020.1。

  • 这对我构建 Netty 项目很有用:)至少它消除了 75-90% 的错误:) (2认同)

Dmi*_*kiy 1

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