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

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

OS X有rt.jar吗?

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

在这里查看详细信息:

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

此博客条目描述了一种在不修改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 . 

关于如何在OSX问题上设置JAVA_HOME应该如何获得rt.jar等效的解释。

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