我有和这里类似的问题。然而,这个问题并没有提到他正在使用什么构建工具,我假设他正在使用maven,因为我以前在使用Java9模块时,maven没有问题。
我正在使用hibernate验证器,我想使用Java9模块,所以我添加了一个 module-info
文件到模块的包中,我依赖于验证器api(我使用的类是 Validator
, ValidatiorFactory
, ... 从像 javax.validation
)
我搜索了这些类,发现它们位于我的项目依赖项中的这个jar中: validation-api-2.0.1.Final.jar
,我使用的类在包中 validation
.
我使用了命令 jar --file=/path-to-the-jar-on-my-pc/validation-api-2.0.1.Final.jar --describe-module
在终端中,获取从该jar导出的模块的名称:
No module descriptor found. Derived automatic module.
java.validation@2.0.1.Final automatic
requires java.base mandated
contains javax.validation
contains javax.validation.bootstrap
contains javax.validation.constraints
contains javax.validation.constraintvalidation
contains javax.validation.executable
contains javax.validation.groups
contains javax.validation.metadata
contains javax.validation.spi
contains javax.validation.valueextraction
所以现在当我把我的 module-info
例如,文件 requires javax.validation
ide抱怨找不到模块。我甚至在项目结构中手动添加了依赖项(按 ctrl+shift+alt+s
要在intellij中访问它,我从存储在机器中的路径添加了它,但结果仍然相同。
我还尝试了intellij的帮助工具,发现它增加了 requires java.validation;
我的模块信息,而不是 requires javax.validation;
,但无论如何,它们都不起作用。
我搜索了一下 pom.xml
并找到了这个元素 <Automatic-Module-Name>java.validation</Automatic-Module-Name>
,所以现在我几乎可以肯定是gradle造成了这个问题,但我不是gradle和构建工具工作原理方面的Maven,所以我如何继续使用gradle作为构建工具来解决这个问题呢?
1条答案
按热度按时间gijlo24d1#
直到版本6.4,gradle才为java平台模块系统添加适当的支持。但是,您必须显式配置gradle以使用模块。
如果我没弄错的话,
inferModulePath
是true
默认情况下,从gradle 7.0开始。有关java模块和gradle的更多信息,请参阅https://docs.gradle.org/current/samples/sample_java_modules_multi_project.html