我正在嘗試使用 JDK 11 進行編譯,但以 IntelliJ 中的 Java 1.8 為目標。我已配置:項目設置:項目開發工具包: 11項目語言水平: 8Java 編譯器設置:使用“--發布”選項進行交叉編譯(Java 9 及更高版本)項目字節碼版本: 8模塊設置:軟件開發工具包項目 (11)語言級別:項目默認值(8 - Lambda、類型注釋等)我收到一堆編譯錯誤,說內部包不存在。 無效,因此無濟于事。--add-exports--target 1.8唯一可行的方法是將項目SDK設置回Java 1.8(這在嘗試使用Java 11運行時會導致其他問題,但這是另一個問題)。是否可以使用 JDK 11 進行編譯,并在 IntelliJ 中以 Java 1.8 為目標?
1 回答

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
遺憾的是,如果使用該選項進行編譯,則無法使用內部 API。這在 JEP 247 中進行了描述:--release N
定義了一個新的命令行選項 --release,該選項自動將編譯器配置為生成將鏈接到給定平臺版本的實現的類文件。--版本 N 大致相當于:
對于 N < 9:-源 N -目標 N -引導類路徑 <文檔的 API-從-N>,
對于 N >= 9:-源 N -目標 N --系統<文檔化 API-來自-N>。
然后跟隨主要段落:
對于 N < 9,記錄的 API 由 javac 的 JDK N 的默認引導類路徑上的公共 API 組成。
我同意這實際上是一個很大的限制。你甚至不能使用不安全,這一直是OpenJDK的關鍵部分。
所以,你的問題與智能IDEA無關。這是 Java 平臺的一個限制。
您有兩種方法:
不要使用內部接口
使用 JDK 8 進行編譯
添加回答
舉報
0/150
提交
取消