27

我正在运行ProGuard来缩小我的 jar 文件。它需要的参数之一是系统的运行时 jar。这适用$JAVA_HOME/lib/rt.jar于 Sun 发行版,但不适用于 Apple 的 Mac OS X(在我的情况下为 v10.6 (Snow Leopard))。

OS X 有 rt.jar 吗?

4

5 回答 5

22

它被称为 classes.jar,它位于 /System/Library/Frameworks/JavaVM.framework/Classes 下

在这里查看详细信息:

http://lists.apple.com/archives/java-dev/2003/Mar/msg01530.html

于 2010-05-05T20:08:47.630 回答
12

此博客条目描述了一种无需修改 Proguard 配置即可解决问题的相对直接的方法。

该条目建议创建两个符号链接,以便它们rt.jar存在jsse.jar于 Proguard 期望它们的路径中。

站在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib目录中并运行以下命令为我解决了这个问题:

sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
于 2012-08-06T14:20:33.160 回答
4

What should I set JAVA_HOME to on OSX question中有一些关于如何获得rt.jar等价物的解释。

简短的回答是使用/usr/libexec/java_home或设置JAVA_HOME为的结果,$(/usr/libexec/java_home)然后classes.jarJAVA_HOME/bundle/Classes/classes.jar

于 2011-05-20T07:32:12.527 回答
1

在我的系统上(带有 JDK1.8 的 Mojave 10.14.3),classes.jar除了 gradle 缓存(~/.gradle/caches/)中没有任何内容。但是,有一个rt.jarin /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar。我以与文件夹jsse.jar中的 Henrik 相同的方式链接它:Contents/Home/lib

➜  lib sudo ln -s ../jre/lib/rt.jar 
➜  lib sudo ln -s ../jre/lib/jsse.jar

Proguard 现在可以工作了。

于 2019-03-25T11:14:20.063 回答
0

对我来说,原因是我安装了 JDK 13。安装 JDK 1.8 后,该文件出现在 ProGuard 预期的位置。安装 JDK 1.8 后,您可以运行sudo find /Library -name rt.jar找到确切的路径rt.jar

于 2020-01-10T02:02:56.680 回答