You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jdeps获取Jar依赖遇问题:生成JLink镜像时出现拆分包警告

解决Jdeps拆分包警告与JLink镜像构建问题

问题原因

拆分包(split package)指的是同一个Java包名被打包在多个不同的JAR文件中。Java 9引入的模块系统(JPMS)严格禁止这种情况——因为模块规则要求每个包只能归属一个模块。你用到的第三方库大概率存在不同JAR共享同一包的情况,导致jdeps扫描时触发警告,同时这也会直接影响后续JLink镜像的正常构建,因为JLink完全依赖JPMS的模块规则。

可行解决方法

1. 排查并清理重复依赖

  • 用Maven命令mvn dependency:tree生成依赖树,找出哪些JAR包含了重复的包。比如有些库的不同版本、或者不同子模块可能重复打包了同一个工具包。
  • 在pom.xml里通过<exclusions>标签排除冗余的依赖。举个例子:如果依赖树显示com.foo:bar:1.0和com.foo:baz:2.0都包含com.foo.utils包,保留你实际需要的版本,排除另一个:
    <dependency>
      <groupId>com.foo</groupId>
      <artifactId>baz</artifactId>
      <version>2.0</version>
      <exclusions>
        <exclusion>
          <groupId>com.foo</groupId>
          <artifactId>bar</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    

2. 用jdeps的--split-module合并拆分包

如果某些第三方库必须共存且无法避免拆分包,可以用jdeps的--split-module参数把分散在多个JAR里的同一个包合并成一个自定义模块。比如:

jdeps --print-module-deps -cp <classpath> -R --multi-release 17 --split-module my.combined.module=libA.jar,libB.jar <your-jar-path>

这个命令会把libA.jar和libB.jar里的重复包合并到名为my.combined.module的模块中,让jdeps能正常生成依赖列表。

3. 为非模块化JAR添加自动模块名

很多旧第三方库没有module-info.java,JPMS会把它们当作“自动模块”,但自动模块的识别可能不够准确。你可以在Maven构建时给这些JAR指定自动模块名,帮助jdeps正确识别:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.3.0</version>
  <configuration>
    <archive>
      <manifestEntries>
        <Automatic-Module-Name>com.example.thirdparty.lib</Automatic-Module-Name>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

这样jdeps扫描时会更清晰地划分模块,减少拆分包的误判警告。

4. 手动指定模块构建JLink镜像

如果jdeps的扫描结果始终不可用,可以跳过jdeps,直接手动整理项目需要的JDK模块和第三方模块,用jlink命令直接构建:

jlink --module-path $JAVA_HOME/jmods:/path/to/your/modules --add-modules java.base,java.logging,com.example.thirdparty.lib --output my-app-image

这里的/path/to/your/modules需要存放所有转换为模块(或自动模块)的第三方JAR文件。

5. 升级或替换有问题的第三方库

不少旧的第三方库没有适配JPMS,存在拆分包问题。去查这些库的最新版本,很多开源项目已经修复了拆分包的问题,升级到兼容JPMS的版本就能直接解决警告。

内容的提问来源于stack exchange,提问作者ARYAAAAAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:35:05