У меня старая версия jar, теперь я хочу использовать jlink для создания jre меньшего размера, как это сделать?

У меня есть приложение java, использующее java8 и maven, теперь я хочу использовать jdk9 для создания jre меньшего размера для пакета с моим приложением, как это сделать? Если это невозможно, не могли бы вы дать мне maven использовал jlink для создания небольшой демонстрации jre? Мой английский не так хорош, извините и спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
678
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете используйте JDeps для анализа ваших зависимостей от модулей:

jdeps -summary -recursive --class-path $libs $jar

Замените $libs всеми своими зависимостями (даже транзитивными; Maven может их скопировать) и $ jar на JAR вашего приложения. Затем вывод содержит список зависимостей от модулей (ищите ... -> java.* и ... -> jdk.*).

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

jdeps -summary -recursive --class-path 'jars/*' jars/app.jar
    | grep '\-> java.\|\-> jdk.'
    | sed 's/^.*-> //'
    | sort -u

Если вы используете Java 10 или новее, вы можете использовать --print-module-deps вместо -summary.

Возьмите этот список и загрузите его в jlink:

jlink
    --module-path $jdk/jmods
    --add-modules $modules
    --output minimal-jre

Если вы также хотите связать все службы платформы, добавьте --bind-services.

В следующей строке будут перечислены все определенные вами модули, а также их зависимости и, возможно, службы, которые они связывают:

minimal-jre/bin/java --list-modules

Думаю, лучше использовать --print-module-deps вместо -summary

ZhekaKozlov 17.05.2018 16:57

Спасибо, добавил что.

Nicolai Parlog 17.05.2018 19:43

Другие вопросы по теме