10

每次我尝试创建一个新的 java 项目时,Eclipse 都会不断询问我是否要将一个 module-info java 文件添加到源文件夹中。这变得非常烦人,因为没有立即明显的选项可以选择退出此检查。

面向 Java 开发人员的 IDE,Photon 版本 4.8.0

4

2 回答 2

6

在第一个对话框“new java project”上单击>> next 后,在创建新项目时查看。单击>>完成时会弹出另一个对话框。它将带您进入第三个对话框,要求创建模块信息 java 文件?& 给你两个选项创建和不创建。您应该选择“不创建”。

以下是文件 module-info.java 内容的一些优点: 要将 jar 文件声明为命名模块,需要提供 module-info.class 文件,该文件自然是从 module-info.java 文件编译而来. 它声明了模块系统内的依赖关系,并允许编译器和运行时监管应用程序中模块之间的边界/访问冲突。让我们看看文件语法和您可以使用的关键字。

  • Module module.name – 声明一个名为 module.name 的模块。
  • Requires module.name - 指定我们的模块依赖于模块module.name,允许该模块访问目标模块中导出的公共类型。
  • 需要传递 module.name - 任何依赖于该模块的模块都会自动依赖于 module.name。
  • Exports pkg.name 表示我们的模块在包 pkg.name 中为每个需要该模块的模块导出公共成员。
  • 将 pkg.name 导出到 module.name 与上面相同,但限制哪些模块可以使用包 pkg.name 中的公共成员。
  • 使用 class.name 使当前模块成为服务 class.name 的使用者。
  • 为 class.name 提供 class.name.impl 将 class.name.impl 类注册为提供 class.name 服务实现的服务。opens pkg.name 允许其他模块使用反射来访问包 pkg.name 的私有成员。
  • 打开 pkg.name 到 module.name 的作用相同,但限制了哪些模块可以对 pkg.name 中的私有成员进行反射访问。

module-info.java 语法的一大优点是现代 IDE 将完全支持您编写它们的工作。也许所有这些都会很好地工作。我知道 IntelliJ IDEA 会在您从尚未需要的模块中导入类时快速修复模块文件,等等。我不怀疑 Eclipse IDE 和 NetBeans IDE 提供相同的功能。

于 2018-09-04T16:30:31.327 回答
2

也许这不是一个完美的解决方案,但它会停止询问您是否选择使用 Java 版本 8 编译器 (JavaSE-1.8)。如果您需要任何更新的 Java 版本,恐怕没有答案。

在此处输入图像描述

于 2020-05-10T12:38:22.867 回答