15

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

关闭对私有 JDK API 的访问的所有问题都已修复,我可以使用 maven、1.8 语言级别和 JDK 9 从命令行构建项目。

Intellij Idea 根本没有突出任何问题,JDK 9 设置为项目 SDK,但如果我尝试在 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

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

4

2 回答 2

16

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

于 2020-10-14T12:20:40.647 回答
1

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

于 2017-09-29T18:37:42.777 回答