在命令行上运行模块会出现错误:找不到模块目标

时间:2018-10-24 04:11:37

标签: java command-line java-9 java-module

我是JAVA9模块化体系结构的新手,正在尝试通过Windows命令行在JAR内编译和运行模块。

我创建了简单的HelloWorld.java主类,项目架构如下:

enter image description here

我可以使用以下命令成功编译并创建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

我是否需要在模块定义中导出条目类?任何建议都将帮助我解决问题。

1 个答案:

答案 0 :(得分:0)

尝试更改

-m target/HelloWorld/com.java.modularity.test1.HelloWorld

-m HelloWorld/com.java.modularity.test1.HelloWorld 

因为语法是 module [/ mainclass]