在 OS X 上运行 ProGuard:Apple 的 rt.jar 在哪里?

Posted

技术标签:

【中文标题】在 OS X 上运行 ProGuard:Apple 的 rt.jar 在哪里?【英文标题】:Running ProGuard on OS X: Where is Apple's equivalent to the rt.jar? 【发布时间】:2011-02-16 02:37:19 【问题描述】:

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

是否有适用于 OS X 的 rt.jar?

【问题讨论】:

【参考方案1】:

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

详情请看这里:

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

【讨论】:

在我的系统 (Mojave 10.14.3) 上,除了 gradle 缓存 (~/.gradle/caches/) 之外,没有 classes.jar。但是,一个 rt.jar,位于 /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar。【参考方案2】:

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

该条目建议创建两个符号链接,以便 rt.jarjsse.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 .

【讨论】:

【参考方案3】:

在What should I set JAVA_HOME to on OSX 问题中有一些关于如何到达rt.jar 等效项的说明。

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

【讨论】:

【参考方案4】:

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

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

Proguard 现在可以工作了。

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于在 OS X 上运行 ProGuard:Apple 的 rt.jar 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mac OS X上安装 Ruby运行环境

如何在Apple OS X 10.5 Leopard上构建和安装GNU wget

如何在mac os x上安装 ruby运行环境

在 Mac OS X 上使用 Qwt

在 Mac OS X 上安装了 Python 3,但它仍然是 Python 2.7

以编程方式在 Mac OS X 上创建 PPTP ***