Esecuzione ProGuard su OS X: Dove è equivalente di Apple per il rt.jar?
Domanda
Io corro ProGuard a ridursi il mio file jar. Uno dei parametri di cui ha bisogno è vaso di esecuzione del sistema. Questo è a $JAVA_HOME/lib/rt.jar
sulle distribuzioni di Sun, ma non su Apple Mac OS X (versione 10.6 (Snow Leopard) nel mio caso).
C'è un rt.jar per OS X?
Soluzione
Si chiama classes.jar ed è sotto /System/Library/Frameworks/JavaVM.framework/Classes
Guardate qui per i dettagli:
http://lists.apple.com/archives/ java-dev / 2003 / mar / msg01530.html
Altri suggerimenti
questo blog descrive un modo relativamente straight-forward per risolvere il problema senza modificare la configurazione Proguard.
La voce raccomanda che si creano due collegamenti simbolici, in modo che rt.jar
e jsse.jar
esiste nel percorso che Proguard si aspetta che.
In piedi nella directory /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib
e eseguendo i seguenti comandi risolto il problema per me:
sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
C'è una spiegazione di come arrivare al rt.jar
equivalente nella Cosa devo impostare JAVA_HOME su OSX domanda.
La risposta breve è quella di utilizzare il risultato di /usr/libexec/java_home
o per JAVA_HOME
insieme a $(/usr/libexec/java_home)
e poi trovare classes.jar
(l'OS X equivalente di rt.jar) a JAVA_HOME/bundle/Classes/classes.jar
Sul mio sistema (Mojave 10.14.3 con JDK1.8), non v'è alcuna classes.jar
se non in cache Gradle (~/.gradle/caches/
). V'è, tuttavia, un rt.jar
in /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar
. Ho collegato e jsse.jar
nello stesso modo come Henrik dalla cartella Contents/Home/lib
:
➜ lib sudo ln -s ../jre/lib/rt.jar
➜ lib sudo ln -s ../jre/lib/jsse.jar
e Proguard ora funziona.