Как запустить изображения, созданные JDK 9 jlink?

Я следую головоломки быстрый старт здесь. Я успешно запустил дано:

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp

это создает "образ времени выполнения", который является разнесенной структурой каталогов, которая выглядит так:

~ tree -d greetingsapp
greetingsapp
├── bin
├── conf
│   └── security
│       └── policy
│           ├── limited
│           └── unlimited
├── include
│   └── darwin
├── legal
│   └── java.base
└── lib
    ├── jli
    ├── security
    └── server

как я могу запустить это? Я ожидал двоичный исполняемый файл, а не взорванное дерево каталогов.

на есть java и keytool. Я ничего не вижу .файлы jar или .файлы классов для запуска через пакет java выполнимый.

1 ответов


выполнить, сделайте следующее:

greetingsapp/bin/java -m com.greetings/com.greetings.Main 

или, вы можете иметь jlink построить сценарий запуска, который делает это

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp --launcher launch=com.greetings/com.greetings.Main

а затем запустить с:

greetingsapp/bin/launcher

форма той же документации :-

$ java -p mods -m com.greetings/com.greetings.Main

может быть выполнен для запуска Main класс из структуры модуля без связывания с помощью jshell как хорошо.


и jlink является инструментом компоновщика и может использоваться для связывания набора модулей вместе с их транзитивные зависимости, чтобы создать пользовательский модульный образ времени выполнения, называемый Модульные Образы Выполнения который может быть выполнен с помощью инструмент JMOD введено с модулями Java 9. Как указано в комментариях и ответил @Jorn если вы просто намерены выполнить основной класс.

вы можете запустить приложение, используя двоичный файл java в bin папка сгенерированного изображения и использование команда:

java com.greetings.Main

С другой стороны, пример создания файла JMOD для использования в качестве модуля далее:

jmod create --class-path mods/com.greetings --cmds commands
  --config configfiles --header-files src/h --libs lib
  --main-class com.greetings.Main --man-pages man --module-version 1.0
  --os-arch "x86_x64" --os-name "Mac OS X"
  --os-version "10.10.5" greetingsmod 

редактировать: расширить + уточнить ответ, который я искал.