Nat*_*ruk 12 java groovy java-platform-module-system java-9 java-module
我花了一些时间将我用Groovy编写的项目迁移到Java 10.现在可以编译并运行它.但它仍然没有使用Java 9模块化的任何好处.
谷歌搜索Groovy和Java 9模块几乎没有.
那么是否可以迁移Groovy项目以使用带有Project Jigsaw模块的JDK 10?
Nat*_*ruk 13
好吧,经过几天的实验,我想出了答案 - 是的,可以使用Groovy和Project Jigsaw模块.
但它需要一些额外的努力.
假设我们有以下文件结构:
??? build
??? jigsaw
? ??? module
? ??? test
? ??? Application.groovy
??? lib
? ??? groovy.all.jar
??? module-info.java
Run Code Online (Sandbox Code Playgroud)
module-info.java
module main {
requires groovy.all;
}
Run Code Online (Sandbox Code Playgroud)
Application.groovy
package jigsaw.module.test
class Application {
static void main(String[] args) {
println "Hello module!"
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我们需要使用javac编译module-info.java文件,而不是使用groovyc编译所有文件,因为groovy将模块文件视为闭包.
我们开始做吧:
javac -d build --module-path lib/ module-info.java
Run Code Online (Sandbox Code Playgroud)
--module-path将包含我们的groovy.all.jar作为自动模块,其名称源自JAR文件名.
接下来我们需要编译Application.groovy
groovyc -d build jigsaw/module/test/Application.groovy
Run Code Online (Sandbox Code Playgroud)
它很顺利.
编译后我们有module-info.class(又名模块描述符)和Application.class.
??? build
? ??? jigsaw
? ? ??? module
? ? ??? test
? ? ??? Application.class
? ??? module-info.class
??? jigsaw
? ??? module
? ??? test
? ??? Application.groovy
??? lib
? ??? groovy.all.jar
??? module-info.java
Run Code Online (Sandbox Code Playgroud)
现在让我们尝试运行我们编译的模块.
java --module-path build:lib --module main/jigsaw.module.test.Application
Run Code Online (Sandbox Code Playgroud)
这就是我们得到的
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for lib/groovy.all.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class moduleName=groovy-all not in module
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我不知道.经过大量的谷歌搜索,我发现了类似的东西.
所以我们需要手动从JAR中删除这些文件:
最后,我们的Java模块能够启动
java --module-path build:lib --module main/jigsaw.module.test.Application
Hello module!
Run Code Online (Sandbox Code Playgroud)
所有操作都是使用Oracle JDK 10和Groovy 2.4.15完成的.
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |