Correr ProGuard en OS X: ¿Dónde es equivalente a la de Apple rt.jar?
Pregunta
Estoy corriendo ProGuard para reducir el tamaño de mi archivo jar. Uno de los parámetros que necesita es frasco de tiempo de ejecución del sistema. Esto es al $JAVA_HOME/lib/rt.jar
sobre las distribuciones de Sun, pero no en la de Apple Mac OS X (v10.6 (Snow Leopard) en mi caso).
¿Hay un rt.jar para OS X?
Solución
Se llama classes.jar y está bajo /System/Library/Frameworks/JavaVM.framework/Classes
Mira aquí para más detalles:
http://lists.apple.com/archives/ java-dev / 2003 / Mar / msg01530.html
Otros consejos
Esta entrada de blog describe una forma relativamente recta de avance para resolver el problema sin modificar la configuración Proguard.
La entrada recomienda que se crean dos enlaces simbólicos, por lo que existen rt.jar
y jsse.jar
en el camino que les espera a Proguard.
Permanente en el directorio /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib
y ejecutando los siguientes comandos resuelve el problema para mí:
sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
Hay alguna explicación de cómo llegar al equivalente rt.jar
en el ¿Qué debo configurar JAVA_HOME para que en cuestión OSX .
La respuesta corta es utilizar el resultado de /usr/libexec/java_home
o al conjunto JAVA_HOME
a $(/usr/libexec/java_home)
y luego encontrar classes.jar
(el equivalente de OS X rt.jar) en JAVA_HOME/bundle/Classes/classes.jar
En mi sistema (10.14.3 Mojave con JDK1.8), no hay classes.jar
excepto en cachés Gradle (~/.gradle/caches/
). Hay, sin embargo, un rt.jar
en /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar
. He vinculado y jsse.jar
de la misma manera como Henrik desde la carpeta Contents/Home/lib
:
➜ lib sudo ln -s ../jre/lib/rt.jar
➜ lib sudo ln -s ../jre/lib/jsse.jar
y Proguard trabaja ahora.