栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“检测到所需的基于文件名的自动模块。” 警告是什么意思?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“检测到所需的基于文件名的自动模块。” 警告是什么意思?

自动模块回顾

一个显式模块(即带有的模块

module-info.java
)只能访问其所需模块的代码(暂时忽略隐含的可读性)。如果所有依赖项都模块化,那就太好了,但是如果没有将它们模块化怎么办?如何引用非模块化的JAR?

自动化模块就是答案:任何在模块路径上结束的JAR都将变成一个模块。如果JAR不包含模块声明,则模块系统将创建具有以下属性的自动模块:

  • 推断的名称(这是这里的重要位)
  • 读取所有其他模块
  • 导出所有包裹

Maven依赖于该机制,一旦创建了一个机制,

module-info.jar
它将所有依赖项放在模块路径上。

自动名称

有两种方法可以推断自动模块的名称:

  • 清单中的条目
  • 从JAR文件名猜测

在第一种情况下,名称是由维护者故意选择的,因此可以假定它是稳定的(例如,在项目模块化时,它不会更改)。第二个显然在整个生态系统中是不稳定的-
并非所有项目设置都导致其依赖项的文件名完全相同。

这是什么意思?

警告的原因是您的某些依赖项是自动模块, 并且 未在清单中定义其将来的模块名称。而是,它们的名称是从文件名派生的,这使它们不稳定

稳定的名字

那么,为什么不稳定的名称会带来问题?假设您的库与发布,

requires guava
而我的框架与发布
requirescom.google.guava
。现在有人将您的库与我的框架一起使用,突然他们在模块路径上需要模块 guava
com.google.guava 。没有一个无痛的解决方案可以解决这个问题!

怎么样?例如,通过阻止开发人员发布依赖于基于文件名的自动模块的工件。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号