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

JDK 15.0.1环境下ProGuard无法读取rt.jar的问题解决求助

解决JDK 15.0.1下ProGuard找不到rt.jar的问题

嘿,这个问题我之前适配Java 11和15的时候也碰到过,给你详细捋清楚:

rt.jar的去向?

从Java 9开始,JDK引入了模块化系统(Project Jigsaw),彻底重构了内部结构。原来的rt.jar、tools.jar这些巨型jar包都被拆分成了一个个独立模块,统一打包到JDK目录下的lib/modules文件里——它不是传统意义上的jar文件,而是容纳所有模块的容器。所以JDK 15里确实没有单独的rt.jar了,这不是文件丢失,是JDK架构的正常迭代变化。

针对JDK 15.0.1 + Windows 10的修复方案

方案1:升级ProGuard到最新稳定版(推荐)

旧版本的ProGuard还停留在Java 8的逻辑里,默认会去找rt.jar。而ProGuard 6.0及以上版本已经完全适配Java 9+的模块化系统,升级后它会自动识别JDK的modules文件,不需要你手动配置rt.jar路径。

你只需要替换成最新版ProGuard,重新运行混淆,这个报错大概率会直接消失。

方案2:手动配置模块路径(如果暂时不能升级)

如果因为项目限制没法升级ProGuard,你可以手动修改配置,让它指向JDK的模块文件:

  • 打开ProGuard的Input/Output选项卡,删除原来指向C:\Program Files\Java\jdk-15.0.1\lib\rt.jar的条目,添加C:\Program Files\Java\jdk-15.0.1\lib\modules作为输入文件。
  • 或者在ProGuard的配置文件(.pro文件)里,替换原来的-libraryjars配置:
    # 删掉原来的rt.jar配置
    # -libraryjars C:\Program Files\Java\jdk-15.0.1\lib\rt.jar
    # 添加modules文件作为依赖库
    -libraryjars C:\Program Files\Java\jdk-15.0.1\lib\modules
    # 可选:如果项目用到其他JDK模块,用--add-modules指定
    --add-modules java.base,java.desktop,java.logging
    
    其中java.base是核心模块,对应原来rt.jar里的核心类,大部分项目只需要这个就够了,其他模块根据你的项目依赖添加。

方案3:检查并清理硬编码路径

确认你之前的ProGuard配置里有没有硬编码写死rt.jar的路径,比如在配置文件或GUI参数里手动指定了这个路径,把这些条目全部移除,让ProGuard自动适配当前JDK的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:17:32