我是 JAVA9 模块化架构的新手,并尝试从 Windows 命令行编译和运行 JAR 内的模块。
我创建了简单的HelloWorld.java主类,项目架构如下:
我使用以下命令成功编译并创建了 JAR 文件。
编译:
javac -d target/HelloWorld src/HelloWorld/com/java/modularity/test1/HelloWorld.java src/HelloWorld/module-info.java
在“jarfile”目录中创建 HelloWorld.jar 文件:
jar -cfe jarfile/HelloWorld.jar com.java.modularity.test1.HelloWorld target/HelloWorld/module-info.class target/HelloWorld/com/java/modularity/test1/HelloWorld.class
尝试从 JAR 文件运行模块时出现以下错误:
D:\sts_workspace\java9tutorial>java -p jarfile -m HelloWorld
module HelloWorld does not have a ModuleMainClass attribute, use -m <module>/<main-class>
在命令中更改幻灯片时出现以下错误:
D:\sts_workspace\java9tutorial>java -p jarfile -m target/HelloWorld/com.java.modularity.test1.HelloWorld
Error occurred during initialization of boot layer
java.lang.module.FindException: Module target not found
<小时/>
这是我的入门类 HelloWorld.java :
package com.java.modularity.test1;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Testing first HelloWorld module ...");
}
}
这是 HelloWorld 模块描述:
module HelloWorld {
}
我还尝试提取生成的 HelloWorld.jar 文件,并且 MANIFEST.MF 文件中也存在“Main-Class”属性:
Manifest-Version: 1.0
Created-By: 1.8.0_172 (Oracle Corporation)
Main-Class: com.java.modularity.test1.HelloWorld
我需要导出模块定义中的入口类吗?任何建议都将帮助我解决问题。
最佳答案
尝试改变
-m target/HelloWorld/com.java.modularity.test1.HelloWorld
到
-m HelloWorld/com.java.modularity.test1.HelloWorld
语法是模块[/mainclass]
关于java - 在命令行上运行模块会出现错误 : Module target not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960983/