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

问题描述 投票:26回答:4

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

OS X有rt.jar吗?

java macos proguard
4个回答
22
投票

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

在这里查看详细信息:

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


12
投票

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 .

4
投票

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

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


0
投票

在我的系统上(Mojave 10.14.3 with JDK1.8),除了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现在工作。

© www.soinside.com 2019 - 2024. All rights reserved.