亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在智能JelJ中使用Java 11目標Java 1.8進行編譯

如何在智能JelJ中使用Java 11目標Java 1.8進行編譯

收到一只叮咚 2022-09-28 14:35:08
我正在嘗試使用 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 進行編譯


查看完整回答
反對 回復 2022-09-28
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號