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

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

允許 Eclipse 識別標準庫 JDK11 補丁模塊

允許 Eclipse 識別標準庫 JDK11 補丁模塊

胡子哥哥 2022-04-28 15:59:31
只是出于好奇,我正在嘗試設置 Eclipse 以允許它編譯和運行一個應用程序,其中一個標準庫類被打了補丁。我有 2 個 Java 項目patch,consumer一個包含一個字符串補丁類(具有一個新方法size(),與 相同length()),另一個應該使用所述方法size()。設置如下:- patch  - bin (contains class files)  - src    - java      - lang        - String.java- consumer  - src    - consumer      - Main.java      - module-info.java主.java:package consumer;public class Main {    public static void main(String[] args) {        String s  = new String("hello");        System.out.println(s.size());    }}編譯后patch(從而進入String.class)patch/bin/java/lang/我知道我可以輕松使用:java --patch-module java.base=patchpjt/bin/  consumer/src/consumer/Main.java正確調用新添加的方法size(),得到結果5。問題是在 Eclipse 中方法size仍然無法識別(錯誤是Method Size() is underfined for type String):所以我的問題是:如何配置 Eclipse 以使項目consumer正確編譯、運行并且不顯示錯誤?如何配置 Eclipse 以便在 Content Assist 上顯示該方法size()?我知道我需要使用,Build Path -> Module Path -> Edit Is Modular -> Details Tab -> Patched module但我不知道如何配置這兩個項目。一些您可能會覺得有用的信息:Eclipse 2018-12 (4.10.0) 內部版本號:20181214-0600感謝您的回復。
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

您正在使用--patch-module它不打算用于(JEP 261:模塊系統):

--patch-module 選項僅用于測試和調試。強烈建議不要在生產環境中使用它。

在您的場景中,您不會修補現有方法,而是添加一個破壞系統庫 API 的附加方法。Eclipse 只支持打補丁而不破壞系統庫的 API。在我看來,沒有顯示任何錯誤的事實javac(可能是由于缺少檢查 API 不會被破壞)是一個錯誤。

如果您創建自己的 JRE,請將其添加到Window > Preferences: Java > Installed JREs中,并確保在創建新 Java 項目時不要選擇執行環境 JRE,而是選擇您的特定 JRE。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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