Jan*_*sen 7 java java-platform-module-system java-9 module-path
我JMOD用这样的jmod工具创建了一个简单的文件
$JAVA_HOME/bin/jmod create --class-path classes test/samples.jmod
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试通过运行以下命令在该模块中执行一个类:
java -mp test -m de.mypackage/de.mypackage.Test
Run Code Online (Sandbox Code Playgroud)
这导致以下异常:
Error occurred during initialization of VM
java.lang.module.ResolutionException: JMOD files not supported: test/samples.jmod
at java.lang.module.Resolver.findWithBeforeFinder(java.base@9-ea/Resolver.java:729)
at java.lang.module.Resolver.resolveRequires(java.base@9-ea/Resolver.java:86)
at java.lang.module.Configuration.resolveRequiresAndUses(java.base@9-ea/Configuration.java:370)
at java.lang.module.ModuleDescriptor$1.resolveRequiresAndUses(java.base@9-ea/ModuleDescriptor.java:1986)
at jdk.internal.module.ModuleBootstrap.boot(java.base@9-ea/ModuleBootstrap.java:263)
at java.lang.System.initPhase2(java.base@9-ea/System.java:1928)
Run Code Online (Sandbox Code Playgroud)
如果我只是将我的classes目录(我用来创建JMOD文件)设置为模块路径,那么一切都按预期工作.
通常不可能JMOD在模块路径上有文件吗?如果是这种情况,有什么理由吗?
请参见http://openjdk.java.net/jeps/261#Packaging:-JMOD-files
JMOD文件可以在编译时和链接时使用,但不能在运行时使用.为了在运行时支持它们,通常需要我们准备好即时提取和链接本机代码库.这在大多数平台上都是可行的,虽然它可能非常棘手,我们还没有看到许多需要此功能的用例,因此为了简单起见,我们选择在此版本中限制JMOD文件的实用程序.