我正在尝试使用JDK 11进行编译,但目标是IntelliJ中的Java 1.8。我已经配置:
我收到一堆编译错误,指出内部软件包不存在。 --add-exports
对--target 1.8
无效,因此无济于事。
唯一起作用的是将Project SDK设置回Java 1.8(这在尝试与Java 11一起运行时会引起其他问题,但这是另一个问题)。
是否可以在IntelliJ中使用JDK 11进行编译并以Java 1.8为目标?
还有其他一些相关的问题似乎可以解决,但不适用于IntelliJ:
答案 0 :(得分:3)
不幸的是,如果使用--release N
选项进行编译,则不能使用内部API。 JEP 247中对此进行了描述:
定义了新的命令行选项--release,该选项会自动 配置编译器以生成将链接到的类文件 给定平台版本的实现。 --release N是 大致相当于:
对于N <9:-source N -target N -bootclasspath
, 对于N> = 9:-源N-目标N-系统
。
然后跟随主要段落:
对于N <9,已记录的API包含已启用的公共API JDK N的javac的默认启动类路径。
我同意这实际上是一个很大的限制。您甚至不能使用sun.misc.Unsafe,这一直是OpenJDK的关键部分。
因此,您的问题与IntelliJ IDEA无关。这是Java平台的局限性。
您有两种方法: