Добавление модуля в путь через параметр --add-modules в Java 9+
я изучаю Java модули
mkdir -p ./out/moduleFuncs ./out/moduleApp
### Создаю необходимые директории а именно moduleFuncs иmoduleApp
javac -d ./out/moduleFuncs ./src/moduleFuncs/module-info.java ./src/moduleFuncs/com/sazonov/funcs/Funcs.java
### Компилирую исходники в .class от которых будет зависеть другой модуль
javac --module-path ./out/moduleFuncs -d ./out/moduleApp ./src/moduleApp/module-info.java ./src/moduleApp/com/sazonov/App.java
### Компилирую исходники другого модуля который будет требовать модуль moduleFuncs
java --module-path ./out -m moduleApp/com.sazonov.App
### Запускаю
Hello Module
### Результат великолепно
Я знаю что --module-path(ищет модули, вернее сказать указывает на модули) аналогичен старому доброму --class-path(ищет классы, вернее сказать указывает на классы),
еще есть --module-source-path(он указывает на модули которые понадобятся для компиляции класса содержащего метод main) аналогичен --source-path
Всё прекрасно
Но тут я узнаю что можно для своего приложения собирать кастомные версии jvm c помощью утилиты jlink [--launche] [module-path] [--add-modules] [--outputModule]
Зачем нужен ключ --add-modules ???
jlink --launcher ModuleApp=moduleApp/com.sazonov.App --module-path $JAVA_HOME/jmods:./out --add-modules moduleApp --output moduleOut
###
./moduleOut/bin/ModuleApp
И ещё я в курсе про то что модули бывают 4 типов:
- System Modules — Java SE и JDK модули.
- Application Modules — модули которые написали мы.
- Automatic Modules — это модули с открытым доступом, создаваемые\ Java автоматически из JAR-файлов.
- Unnamed Module — безымянный модуль, автоматически создаваемый из\ всех JAR-файлов, которые загружены на --class-path.
В примере используются 1 тип и 2 тип
и они указанны в --module-path
Где не прав поправьте
Возможно ли работать без этого параметра ?
Если да то как ?