【问题标题】:Java 9: Module java.xml.bind is not accessible in EclipseJava 9:模块 java.xml.bind 在 Eclipse 中不可访问
【发布时间】:2018-04-01 19:12:19
【问题描述】:

我将 Java 8 中的 maven 项目迁移到 Eclipse OxyGen 1a 中没有任何构建工具的 Java 9 项目。

所以我的 module-info.java 看起来像这样:

但 java.xml.bind 不可访问,尽管它在我的模块路径中:

那么这里出了什么问题?

【问题讨论】:

  • 那个模块是deprecated。您需要将 JAXB 作为外部库。
  • JDK 9中存在,但不在默认模块路径中。
  • requires java.xml.bind 应该可以工作。正如其他人所指出的那样,该模块在 Java SE 中已被弃用-删除,但该模块具有双重生命,因此如果从 JDK 中丢弃,它将继续存在。从 2.3.0 版开始,独立版本是一个显式模块,您可以在模块路径(或升级模块路径以覆盖 JDK 中的版本)上部署它。对于您的问题,如果它在 Eclipse 之外工作,那么它暗示了 Eclipse 环境中的某些东西。
  • Related answer 用于这些 API 的迁移。

标签: java eclipse java-9 java-module


【解决方案1】:

在编译未命名的模块时,java.xml.bind 默认情况下不可访问,但在模块化项目中(如本问题所示)无法解析对模块 java.xml.bind 的引用是 a bug (见下面的编辑)。

要在错误修复之前解决此问题,您可以通过双击 Is modular 明确包含模块 java.xml.bind(请参阅问题中的屏幕截图),然后在显示的对话框中,将所需模块从Available modules 移动到Explicitly included modules

编辑Bug 526054 已在 Eclipse Oxygen.2 中解决,因此模块化项目应该不再需要上述步骤(仍然但与未命名模块中的代码相关)

编辑 2:在 Eclipse 2019-06 中,上述任务的 UI 为 revamped。可以在online help 中找到最新的文档。

【讨论】:

  • 我看到一个反对票,但答案未被接受,让我问一下:您认为缺少什么?
  • 抱歉回复晚了。其他项目需要我注意。所以对于这个问题:事实证明,它是结合 jdk9 或更高版本(就像你已经提到的那样)的一些 eclipse 问题的混合体。尤其是在使用包含不同 jdks 构建的多版本 jar 时。这现在应该在 eclipse 中修复。将在接下来的日子里给它一个新的尝试。不知道为什么我不能将您的答案标记为正确答案...
猜你喜欢
  • 2020-02-21
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2018-07-15
  • 2019-07-17
  • 2020-06-11
  • 1970-01-01
相关资源
最近更新 更多