只是出于好奇,我正在嘗試設置 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。
添加回答
舉報
0/150
提交
取消