如何使内部 Java 包在 Eclipse 中可访问?

How to make an internal Java package accessible in Eclipse?

我在 Eclipse 中用 Java 11(或 Java 10)打开了一个遗留 Java (8) 项目。 Eclipse 现在正确地抱怨无法访问包。例如。 com.apple.laf.AquaComboBoxUI.

从命令行编译时,我可以通过向 javac:

添加参数来显式访问这些包

--add-exports java.desktop/com.apple.laf=ALL-UNNAMED

有没有办法在 Eclipse 中执行相同的操作 IDE?我试图在 JDK 库上添加一个可访问的规则。但这似乎没有效果。有什么想法吗?

是的,我知道,我们应该迁移项目以仅使用官方 API。但那是很长很长的路...

如前所述here您可以通过以下步骤将命令行中使用 javac 传递的参数添加到 Eclipse:

  • 单击 Run->Run Configurations

  • Main tab Browse the project下出现的window和您要为其传递参数的Main class

  • 现在单击 Arguments 选项卡。
  • 在标有 Program arguments: 的文本框中,键入 ${string_prompt}
  • 单击 Apply and Close

现在,当您 运行 您的 Java 应用程序时,会出现一个提示。您可以在此处添加用 space 分隔的所有参数。

您需要设置问题严重性。这属于 forbidden reference (access rules) 下的 Java Compiler -> Errors/Warnings

我正在回答我自己的问题,因为我找到了解决方案。

  1. 在 Eclipse 设置中导航至:Java 构建路径模块路径JRE 系统库
  2. 展开并双击:是模块化的(修改封装)
  3. 切换到详细信息选项卡
  4. 添加新导出:例如java.desktopcom.apple.laf