只是出于好奇,我正在嘗試設(shè)置 Eclipse 以允許它編譯和運行一個應(yīng)用程序,其中一個標(biāo)準(zhǔn)庫類被打了補(bǔ)丁。我有 2 個 Java 項目patch,consumer一個包含一個字符串補(bǔ)丁類(具有一個新方法size(),與 相同length()),另一個應(yīng)該使用所述方法size()。設(shè)置如下:- 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(從而進(jìn)入String.class)patch/bin/java/lang/我知道我可以輕松使用:java --patch-module java.base=patchpjt/bin/ consumer/src/consumer/Main.java正確調(diào)用新添加的方法size(),得到結(jié)果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) 內(nèi)部版本號:20181214-0600感謝您的回復(fù)。
1 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗 獲得超7個贊
您正在使用--patch-module
它不打算用于(JEP 261:模塊系統(tǒng)):
--patch-module 選項僅用于測試和調(diào)試。強(qiáng)烈建議不要在生產(chǎn)環(huán)境中使用它。
在您的場景中,您不會修補(bǔ)現(xiàn)有方法,而是添加一個破壞系統(tǒng)庫 API 的附加方法。Eclipse 只支持打補(bǔ)丁而不破壞系統(tǒng)庫的 API。在我看來,沒有顯示任何錯誤的事實javac
(可能是由于缺少檢查 API 不會被破壞)是一個錯誤。
如果您創(chuàng)建自己的 JRE,請將其添加到Window > Preferences: Java > Installed JREs中,并確保在創(chuàng)建新 Java 項目時不要選擇執(zhí)行環(huán)境 JRE,而是選擇您的特定 JRE。
添加回答
舉報
0/150
提交
取消