Running ProGuard on OS X: Where is Apple's equivalent to the rt.jar?

僤鯓⒐⒋嵵緔 提交于 2019-11-28 22:49:01

It is called classes.jar and it is under /System/Library/Frameworks/JavaVM.framework/Classes

Look here for details:

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

This blog entry describes a relatively straight-forward way to resolve the issue without modifying the Proguard configuration.

The entry recommends that two symbolic links are created, so that rt.jar and jsse.jar exist in the path that Proguard expects them to.

Standing in the /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib directory and running the following commands resolved the problem for me:

sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
Bryan J Swift

There's some explanation of how to get to the rt.jar equivalent in the What should I set JAVA_HOME to on OSX question.

The short answer is to use the result of /usr/libexec/java_home or to set JAVA_HOME to $(/usr/libexec/java_home) and then find classes.jar (the OS X equivalent of rt.jar) at JAVA_HOME/bundle/Classes/classes.jar

On my system (Mojave 10.14.3 with JDK1.8), there is no classes.jar except in gradle caches (~/.gradle/caches/). There is, however, an rt.jar in /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar. I linked it and jsse.jar in the same way as Henrik from the Contents/Home/lib folder:

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

and Proguard works now.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!