我正在尝试使用JDK 11编译,但是在IntelliJ中使用Java 1.8。我配置了:
我收到一堆编译错误,说内部包不存在。 --add-exports
与--target 1.8
无效,因此无济于事。
唯一可行的方法是将Project SDK设置回Java 1.8(当尝试使用Java 11运行时会导致其他问题,但这是另一个问题)。
是否可以使用JDK 11编译并在IntelliJ中定位Java 1.8?
还有其他相关问题似乎有效,但IntelliJ没有:
遗憾的是,如果使用--release N
选项进行编译,则无法使用内部API。这在JEP 247中描述:
定义了一个新的命令行选项--release,它自动配置编译器以生成将链接到给定平台版本的实现的类文件。 --release N大致相当于:
对于N <9:-source N -target N -bootclasspath <recorded-APIs-from-N>,
对于N> = 9:-source N -target N --system <recorded-APIs-from-N>。
然后是主段落:
对于N <9,记录的API由javac的JDK N的默认bootclasspath上的公共API组成。
我同意这实际上是一个很大的限制。你甚至不能使用sun.misc.Unsafe,它一直是OpenJDK的关键部分。
所以,你的问题与IntelliJ IDEA无关。这是Java平台的一个限制。
你有两种方式: