Почему Java не смогла запустить класс-произошла ошибка при инициализации загрузочного слоя - модуль mods не найден



Я прошел через Java 9 jigsaw tutorial. Я изо всех сил пытался запустить класс, java бросает ниже error -



java --module-path mods -m mods/com.test/com.test.HelloWorld
Error occurred during initialization of boot layer
java.lang.module.FindException: Module mods not found


Команда Javac -



javac -d mods --module-source-path src $(find src -name '*.java')


Я использую mac, java версия -



$ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)


Я что-нибудь упустил?

912   3  

3 ответов:

Удалить дополнительные моды из имени модуля -

java --module-path mods -m com.test/com.test.HelloWorld

Флаг -m принимает имя модуля и основной класс, который вы хотите запустить. Имя модуля com.test, следовательно, команда для запуска класса должна быть:

java --module-path mods -m com.test/com.test.HelloWorld

--module-path mods говорит java, где искать, чтобы найти com.test.

При первой компиляции кода с использованием javac команда as -

javac -d mods --module-source-path src $(find src -name '*.java')

То, что вы обеспечили с помощью -d directory, было тем, что к

Задайте каталог назначения для файлов класса.

В вашем случае папка mods, где

Если класс является частью пакета, то javac помещает файл класса в подкаталог, который отражает имя пакета и создает каталоги как необходимый.

Следовательно, вы можете взглянуть на Моды каталог после выполнения команды .class для всех (*.java) будет существовать в соответствующей структуре каталогов по состоянию на имя их пакета.


Тогда java опция инструмента --module-path module path или -p module path, указанная в следующей команде:

Поиск каталогов из списка разделенных точкой с запятой (;) справочники. Каждый каталог - это каталог модулей.

Ваш каталог, в соответствии с которым находится mods, предполагая, что вы должны были создать перейдя по ссылке начало работы.


Затем --module modulename[/mainclass] или -m module[/mainclass] по вашей команде

Задает исходный модуль для разрешения и имя основного класса для выполнения, если он не указан модулем.

, которое в вашем случае является именем модуля com.test и основным классом com.test.HelloWorld.


Следовательно, полный правильный синтаксис команды должен быть: -

java --module-path mods    -m     com.test/com.test.HelloWorld
                   ^               ^         ^
           module directory  module name   main class

Comments

    Ничего не найдено.