在OS X上运行ProGuard:Apple相当于rt.jar在哪里?

时间:2010-05-05 20:00:20

标签: java macos proguard

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

OS X是否有rt.jar?

5 个答案:

答案 0 :(得分:22)

它叫做classes.jar,位于/System/Library/Frameworks/JavaVM.framework/Classes

在此查看详细信息:

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

答案 1 :(得分:12)

This blog entry描述了一种在不修改Proguard配置的情况下解决问题的相对直接的方法。

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

站在jsse.jar目录并运行以下命令解决了我的问题:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib

答案 2 :(得分:4)

有关如何在What should I set JAVA_HOME to on OSX问题中获得rt.jar等效内容的一些解释。

简短的回答是使用/usr/libexec/java_home的结果或将JAVA_HOME设置为$(/usr/libexec/java_home),然后找到classes.jar(OS X相当于rt.jar)at JAVA_HOME/bundle/Classes/classes.jar

答案 3 :(得分:0)

在我的系统(带有JDK1.8的Mojave 10.14.3)上,除了gradle缓存(classes.jar)之外,没有~/.gradle/caches/。但是,rt.jar中有一个/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现在可以工作。

答案 4 :(得分:0)

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