Толстая банка работает хорошо, и я просто хочу использовать обрезанную JRE.
Я пробовал со следующим:
jdeps --list-deps {my fat jar}
В результате я получил:
java.base
java.logging
Если я использую это для создания моей собственной JRE с использованием jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.logging --output cropped-jre
, новая JRE просто не сможет удовлетворить толстую банку.
На самом деле, ей нужны другие зависимости, а также, например, "java.sql".
Просмотр в виде дерева толстой банки это:
jar tf {my fat jar}
META-INF/
META-INF/MANIFEST.MF
org/
org/springframework/
org/springframework/boot/
......
BOOT-INF/
BOOT-INF/classes/
BOOT-INF/classes/templates/
BOOT-INF/lib/{spring/netty/etc.jar}
......
Как я могу получить всю эту зависимость с jdeps?
Когда вы пытаетесь избежать этого, вы можете попытаться распаковать свою толстую банку и указать ее lib на jdeps, но тогда вы столкнетесь с другой ошибкой - https://bugs.openjdk.java.net/browse/JDK-8207162, что не позволяет использовать многоверсионные jar-файлы (например, log4j) с jdeps. . Наконец, я попробовал все зависимости, чтобы найти ответ: jlink --no-header-files --no-man-pages --compress = 2 --strip-debug --add-modules java.base, java.logging, java. management, java.sql, java.transaction.xa, java.xml, java.naming, java.desktop, java.security.jgss, java.instrument, jdk.unsupported --output java-base Это сгенерирует обрезанный JRE ( всего 40 МБ, на основе openJDK11), который может запускать ваше приложение с весенней загрузкой (с Tomcat / Thymeleaf / Jedis).