当前位置: 首页 > 知识库问答 >
问题:

如何使用jdeps来分析胖罐子的依赖性(spring-boot)?

萧宁
2023-03-14

fat jar工作得很好,我只想使用一个裁剪过的JRE。
我尝试了以下方法

jdeps --list-deps {my fat jar}

我得到的结果是:

java.base
java.logging
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}
......

当您试图避免这种情况时,您可能会尝试解压缩fat jar并将它的lib指向jdeps,但随后您会遇到另一个bug--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(

共有1个答案

王波
2023-03-14

我想jdeps只是不能递归地处理JAR。尝试解压缩您的fat jar并在 /lib dir中的每个jar上运行jdeps--list-deps

 类似资料:
  • 我正在用Spring Boot实现一个微服务,它构建了一个打包了所有所需依赖项的“胖罐子”,这真的很好。 但是,我甚至不使用打包依赖项,例如:我使用的是Cassandra数据库, <罢工> 但由于spring-starter依赖,它仍然将MongoDB依赖包在100多个其他依赖包中 ,生成一个24 MB的jar文件! 更新:下面是依赖项:树

  • 在运行Java8和Gradle6.3的Linux机器上,我需要构建一个由库混合而成的fat jar,一些库来自Maven Central,其他库来自位于存储库根部的本地目录,以及我的和: 运行和之后,如果我可以看到JAR中没有包含任何依赖项。 我的最终目标是使我的项目可执行为。我该怎么解决这个?

  • 我正在使用Gradle构建并打包一个非常简单的Spring启动应用程序(99%的静态内容)到带有嵌入式tomcat的jar中。 我尝试创建该jar,起初结果86k,没有启动,因为它缺少一些Spring Boot类。我得出结论,我制作的这个jar不包含应用程序的任何依赖项,既然我确实想要一个完全独立的jar,我应该做更多的研究。 这时,我发现建议将{configurations.compile.co

  • 我的spring-boot项目如下所示: 应用程序包含main和一个实现WebMVCConfigurer的MvcConfig类: 当我运行:gradlew:application:bootrun=>时,一切都很好。 我的web目录是一个angularJS应用程序,gulp将其构建在一个dist库中。(我正在使用moowork节点和gulp gradle插件) 我知道我必须更改addResource

  • 如标题所示,我想知道如何修改以创建一个唯一的,其中包含所有依赖项(包括kotlin lib)。 我在Groovy中找到了这个示例: 但我不知道我怎么能用kotlin写,除了:

  • 我正在用一个胖罐子塑造一个码头工人的形象。我使用插件构建jar,使用构建Docker映像。我对SBT不是很熟悉,我遇到了以下问题。 > 构建映像的步骤之一是复制胖罐子。由于assembly插件在中创建jar,因此我需要知道确切的和jar名称。程序集似乎有一个键,但我不确定如何访问它。我尝试了以下失败的方法。 帮助