首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 9、Jigsaw和自动模块

Java 9、Jigsaw和自动模块
EN

Stack Overflow用户
提问于 2018-06-24 01:20:03
回答 2查看 1.2K关注 0票数 4

Java 9/ 10。一个多星期来,我一直在为一个简单的项目而苦苦挣扎。

正如您在图片中所看到的,我希望使用commons-collections作为一个自动模块(我曾尝试使用maven添加它,但效果不佳)。

所以,我需要把jar放到module-path上。IntelliJ从哪里获取这个模块路径?如何告诉IDE将commons集合添加到项目中,以便

编译器可以在编译时找到它吗? andMaven可以在构建时找到它吗?

有人能帮上忙吗?

编辑:我尝试将它添加到项目-结构对话框中,以各种不同的组合作为模块依赖项。我确实尝试了数百种方法,在结构中移动罐子,但我找不到一个足够简单的文档来告诉我如何做到这一点。我使用编译器选项添加了"-- module -path an“(模块特定的和通用的编译选项),目的是让IDEA找到它,并让Java把它变成一个自动模块。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-24 01:48:55

您需要首先添加一个库条目,以使其在Modules下可用

步骤1:添加库(添加-> Java -> jar文件)

第二步:选择模块(记得点击"Apply")

之后,将成功验证module-info.java文件:

票数 4
EN

Stack Overflow用户

发布于 2018-12-05 00:16:40

如果您从包含module-info.java的( Intellij )模块运行程序,则intellij使用模块路径,否则它将使用类路径。

我试着将common4作为一个模块导入,它似乎确实对我有效,但我不得不使用与您的参数不同的'requires‘参数。您的'requires‘是’commons.Colltions4‘,我的是'org.apache.commons.collections4’(检查commons4清单条目中突出显示的Automatic-Module-Name并使用它)。

如果commons4清单中缺少自动模块名称( 4.1版及更早版本中不存在),则如果名称包含数字或非法字符,则可能无法将jar检测为模块。因此,一些maven存储库jars将无法工作,并且intelli将不会将这些jars视为模块。

您还可以使用以下命令检查错误的文件名:

代码语言:javascript
复制
jar --file=/path/to/jar --describe-module

如果命令失败,很可能是jar没有Automatic-Module-Name条目,并且文件名命名不正确。

好的

jar --file=C:\temp\jigsaw1-1.0.jar --describe-module

坏的

jar --file=C:\temp\jigsaw1.0.jar --describe-Mode`

'jigsaw1.0:模块名称无效:'0‘不是Java标识符’

因此,一些maven jars可能无法被检测为模块,因为它们往往看起来很相似。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51003449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档