Jan*_*sen 11 java java-platform-module-system java-9
我创建了两个小项目de.app1和de.app2,其中App从de.app1使用Test从de.app2.
??? de.app1
? ??? de
? ? ??? app
? ? ??? App.java
? ??? module-info.java
??? de.app2
??? de
??? test
??? Test.java
Run Code Online (Sandbox Code Playgroud)
第一个项目中的module-info.java只包含module de.app1 {}
我编译了第二个项目并创建了一个jar文件:
javac de/test/Test.java
jar cf app2.jar de/test/Test.class
Run Code Online (Sandbox Code Playgroud)
然后尝试编译第一个项目,如下所示:
javac -cp ../de.app2/app2.jar de/app/App.java module-info.java
Run Code Online (Sandbox Code Playgroud)
失败,因为Test无法找到.当我在没有module-info.java的情况下编译项目时,一切正常.
是否有可能在Java 9模块中使用不是Java 9模块的jar中的类?特别是对于依赖第三方项目的项目(例如apache-commons,......),我认为需要这样的东西.
Nic*_*lai 12
对的,这是可能的.您正在寻找的是自动模块.
要创建一个,您只需将常规JAR放入模块路径中提到的文件夹中(例如guava-19.0.jar,在文件夹中libs- 请参阅我的示例项目).这告诉JVM从中创建一个模块.该模块将根据文件名获取名称(在本例中guava),将读取所有其他模块,并导出其所有包.
然后你可以用它给出的名称来要求它(例如require guava;- 见这里).
| 归档时间: |
|
| 查看次数: |
4193 次 |
| 最近记录: |