gpt4 book ai didi

java - 是否可以在 Java 9 模块中使用没有 module-info.class 的依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:29 24 4
gpt4 key购买 nike

我创建了两个小项目de.app1de.app2,其中App来自de.app1使用 de.app2 中的 Test

├── de.app1
│   ├── de
│   │   └── app
│   │   └── App.java
│   └── module-info.java
└── de.app2
└── de
   └── test
   └── Test.java

module-info.java 在第一个项目中只包含 module de.app1 {}

我编译了第二个项目并创建了一个 jar 文件:

javac de/test/Test.java
jar cf app2.jar de/test/Test.class

然后尝试像这样编译第一个项目:

javac -cp ../de.app2/app2.jar de/app/App.java module-info.java

因为找不到 Test 而失败。当我在没有 module-info.java 的情况下编译项目时,一切正常。

是否有可能在 Java 9 模块中使用来自非 Java 9 模块的 jar 中的类?特别是对于依赖于第 3 方项目(例如 apache-commons 等)的项目,我认为需要这样的东西。

最佳答案

是的,这是可能的。您要找的是automatic modules .

要创建一个,您只需将常规 JAR 放入您在模块路径 中提及的文件夹中(例如,guava-19.0.jar 在文件夹 libs 中 - 请参阅 my example project )。这告诉 JVM 从中创建一个模块。该模块将根据文件名获得一个名称(在本例中为 guava),将读取所有其他模块,并导出其所有包。

然后您可以使用给定的名称要求它(例如 require guava; - 参见 here)。

关于java - 是否可以在 Java 9 模块中使用没有 module-info.class 的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38269630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com