Как использовать jdeps для анализа зависимости жирной банки (spring-boot)?

Жирная банка хорошо работает, и я просто хочу использовать обрезанную 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. управление,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).

1 ответ

Похоже jdeps просто не могу обращаться с банками рекурсивно. Попробуй распаковать свою толстую банку и запустить jdeps --list-deps на каждой из баночек в <fat jar root>/lib реж.

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