【问题标题】:Eclipse- Why module-info matters?Eclipse-为什么模块信息很重要?
【发布时间】:2019-08-28 13:42:03
【问题描述】:

我对 java 很陌生。从昨天开始!我安装了eclipse并在其中导入了spring库。但是发生了一个奇怪的问题。在import 语句中,有一个错误告诉The type org.springframework.context.ApplicationContext is not accessible。运行项目后发生另一个错误(与同一主题 ApplicationContext cannot be resolved to a type 相关)。

无论如何!我很困惑。我花了一天时间。搜索诸如 stackoverflow 和谷歌搜索之类的论坛并没有解决我的问题。突然,我在 Eclipse 中看到一条弹出消息,提示了一些解决方案。忽略其中一些毫无价值的是将模块添加到module-info.java 文件。难以置信地解决了这个问题!最奇怪的是,我从未在相关论坛中看到过这个解决方案!最烦人的是,如果我从来没有看到那个弹出窗口怎么办?我在哪里做错了?为什么互联网上没有这个解决方案?

非常感谢!

【问题讨论】:

  • 谢谢!我认为虽然问题是相关的,但它们是不同的。
  • JPMS(= 有一个module-info.java 文件)是模块化的一种方式(在编译时解决,而 OSGi 中的模块/包可以在运行时启动和停止)。使用 JPMS 时,您可以通过 jlink 构建一个带有嵌入式 Java VM 的 Java 应用程序,其中包含最少的而不是整个系统库。这样可以节省一些磁盘空间,并且应用程序启动得更快一些。如果你不使用jlink,唯一的好处是你明确定义了依赖关系,防止意外使用来自不需要的模块的类。
  • @Amin.Qarabaqi 使用 JPMS(= 有一个 module-info.java 文件)时,您必须将库添加到模块路径,而不是类路径。 JPMS 是可选的。我建议删除module-info.java 文件。如有需要,您可以稍后再创建。

标签: java eclipse


【解决方案1】:

Java 模块是 Java 9 的一个新特性;它们允许您准确指定程序所需的依赖项,从而可以更好地控制应用程序的大小 - 无需携带您不使用的库代码。这似乎意味着你需要明确地说出你想要什么,我想这样你才能意识到你正在引入更多的模块。

因此,您通常看不到有关模块的太多信息的原因是它们相对较新,并且怀疑我是一个长期的 Java 开发人员,从未见过模块信息文件!

我想知道在您创建项目时 Eclipse 是否为您提供了一些选项,而您无意中选择了一个选项,意思是“是的,我想要额外控制做 mocules,我不介意做更多的工作。”

【讨论】:

  • Eclipse 在新的 Java 项目向导中确实有一个“创建模块信息文件”选项。不幸的是,它隐藏在向导的第二页上,很容易错过。它默认创建文件。
猜你喜欢
  • 1970-01-01
  • 2011-12-01
  • 2017-03-09
  • 2010-12-23
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多