Запуск модуля в командной строке выдает ошибку: цель модуля не найдена - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в модульной архитектуре JAVA9 и пытаюсь скомпилировать и запустить модуль внутри JAR из командной строки Windows.

Я создал простой основной класс HelloWorld.java, а архитектура проекта выглядит следующим образом:

enter image description here

Мне удалось скомпилировать и создать файл 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Мне нужно экспортировать класс записи в моем определении модуля?Любое предложение поможет мне решить проблему.

1 Ответ

0 голосов
/ 24 октября 2018

Попробуйте изменить

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

на

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

для синтаксиса module [/ mainclass]

...