执行期间的区别是使用类路径与模块路径。在声明 JEP11#孵化器模块
要注意的是如
…默认情况下,类路径上的应用程序不解析孵化器模块。
所以为了使用类路径执行代码
类路径上的应用程序必须使用
--add-modules命令行选项来请求解析孵化器模块。
如果要在不使用该
--add-modules选项的情况下执行,则在创建新的
module并尝试执行
Main该类时,请确保使用参数使用模块路径执行java命令:
-p or --module-path <module path>
从以分号(;)分隔的目录列表中搜索目录。每个目录都是模块目录。
-m or --module <module>/<mainclass
指定要解析的初始模块的名称,如果模块未指定,则指定要执行的主类的名称。
完整的命令将是:
.../jdk-9.0.1.jdk/Contents/Home/bin/java -p .../jdk9-httpincubate-maven/target/classes -m jdk.httpincubate.maven/http2.Main
注意事项 :
我在GitHub上创建的示例项目中也遵循上述目录结构,以复制相同的内容。
只是添加到其中,而没有进行任何公开宣传,我使用的是intelliJ的2017.3 EAP,它还允许我 运行 不包含VM参数的Main类(使用包含上述共享参数的命令)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)