2012-09-03 16 views
38

Ho installato Oracle JRE 7 (non JDK) per MacOSX ma non riesco a individuare dove sono posizionati i file di giurisdizione JCE.Come installare la forza illimitata JCE per JRE 7 in MacOSX?

Devo sostituirli con la versione a forza illimitata.

+0

Eventuali duplicati di http://stackoverflow.com/questions/1179672/unlimited-strength-jce-policy-files –

+2

Questo non è un duplicato perché JRE 7 sembra non avere una Java Home, o non riesco a trovarlo ... Questo è il mio problema. –

+0

Un secondo Google (per i termini 'macosx java home') ha trovato questo sito: http://developer.apple.com/library/mac/#qa/qa1170/_index.html. Hai mai studiato questo prima di chiedere? –

risposta

23

Il tuo commento sulla risposta Thom è corretta. Il percorso JRE è /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/ ei file JCE sono quindi sotto lib/security/.

Mi capita di avere più JVM installate, quindi ho pensato che valesse la pena mostrare un modo per verificare se una particolare JVM ha i file corretti. Questi sono alcuni comandi che è possibile utilizzare per determinare se una data installazione di Java sia configurato correttamente:

find ~/Downloads/UnlimitedJCEPolicy -name *.jar |xargs md5 
cd /Library/Java/JavaVirtualMachines/ # -OR- 
cd '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/' 
find . \(-name local_policy.jar -or -name US_export_policy.jar \) |xargs md5 

Quando si conosce il percorso dei file, è possibile sostituirli quando necessario. Tenere presente che ciascuna versione di Java potrebbe richiedere diverse librerie JCE. Potrebbe essere necessario disporre di vasetti separati per 6, 7 e 8, a seconda della compatibilità.

32

Ho installato Oracle JDK e, se è utile, la directory nel mio caso era /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/. Il tuo chilometraggio può variare, nel qual caso basta eseguire find . -name local_policy.jar e vedere cosa si presenta.

+1

ho trovato 2: ./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/local_policy.jar ./Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/security/local_policy.jar Penso che il primo sia quello che stavo cercando. –

26

Questo è per JDK, non per JRE.


Sono su un Mac, OSX Lion e ho usato /usr/libexec/java_home di trovare la mia casa java

/usr/libexec/java_home -V 
# Matching Java Virtual Machines (3): 
#  1.7.0_51, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home 
#  1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
#  1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
# 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home 

/usr/libexec/java_home 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home 

/usr/libexec/java_home -v 1.6 
# /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

/usr/libexec/java_home -v 1.7 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home 

Da qui è possibile utilizzare questo eseguibile e trovare per individuare questi file

find $(/usr/libexec/java_home -v 1.7) -name local_policy.jar 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar 

find $(/usr/libexec/java_home -v 1.7) -name US_export_policy.jar 
# /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar 

E combinalo con la risposta di @ ngreen per ottenere l'md5 di questi file (se lo desideri)

find ~/Downloads/UnlimitedJCEPolicy -name *.jar |xargs md5 
# MD5 (/Users/nperry/Downloads/UnlimitedJCEPolicy/local_policy.jar) = 9dd69bcc7637d872121880c35437788d 
# MD5 (/Users/nperry/Downloads/UnlimitedJCEPolicy/US_export_policy.jar) = 3bb2e88a915b3cb003ca185357a92c16 

find $(/usr/libexec/java_home -v 1.7) -name local_policy.jar | xargs md5 
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar) = f41ab8f64b1fa13fec7276579c420951 

find $(/usr/libexec/java_home -v 1.7) -name US_export_policy.jar | xargs md5 
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar) = d5d126ae15abecb7d6e3a28b0d57543e 

E puoi vedere che non ho ancora sostituito questi file.

Eseguire il backup dei file originali se si vuole

mkdir ~/Downloads/JCEPolicy-originals-1.7/ 
cp $(find $(/usr/libexec/java_home -v 1.7) -name local_policy.jar)  ~/Downloads/JCEPolicy-originals-1.7/ 
cp $(find $(/usr/libexec/java_home -v 1.7) -name US_export_policy.jar) ~/Downloads/JCEPolicy-originals-1.7/ 

È possibile sostituire i file con questo.

sudo cp ~/Downloads/UnlimitedJCEPolicy/local_policy.jar $(find $(/usr/libexec/java_home -v 1.7) -name local_policy.jar) 
sudo cp ~/Downloads/UnlimitedJCEPolicy/US_export_policy.jar $(find $(/usr/libexec/java_home -v 1.7) -name US_export_policy.jar) 

e ottenere il MD5s mi dice se ha funzionato

find $(/usr/libexec/java_home -v 1.7) -name local_policy.jar | xargs md5 
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/local_policy.jar) = 9dd69bcc7637d872121880c35437788d 

find $(/usr/libexec/java_home -v 1.7) -name US_export_policy.jar | xargs md5 
# MD5 (/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/security/US_export_policy.jar) = 3bb2e88a915b3cb003ca185357a92c16 
+2

Questo è il JDK non il JRE. –

+0

Hai ragione, non l'ho notato nel titolo. – Nate