Я новичок в модульной архитектуре JAVA9 и пытаюсь скомпилировать и запустить модуль внутри JAR из командной строки Windows.
Я создал простой основной класс HelloWorld.java, а архитектура проекта выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/PI7JQ.png)
Мне удалось скомпилировать и создать файл JAR с помощью следующей команды.
Компиляция:
javac -d target/HelloWorld src/HelloWorld/com/java/modularity/test1/HelloWorld.java src/HelloWorld/module-info.java
Создание файла HelloWorld.jar в каталоге "jarfile":
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, а атрибут "Main-Class" также присутствует в файле MANIFEST.MF:
Manifest-Version: 1.0
Created-By: 1.8.0_172 (Oracle Corporation)
Main-Class: com.java.modularity.test1.HelloWorld
DoМне нужно экспортировать класс записи в моем определении модуля?Любое предложение поможет мне решить проблему.