只是出于好奇,我正在尝试设置 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
提交
取消