为了账号安全,请及时绑定邮箱和手机立即绑定

允许 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 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信