2011-05-26 21 views
50

Tengo problemas para entender (rutas reales vs enlaces) para múltiples versiones de Java en mi Mac OSX. Normalmente en Windows si tengo múltiples versiones instaladas en mi máquina, puedo tomar la ruta de la versión que quiero y usarla. Pero en MAC OS X entiendo que hay algo llamado enlaces que apunta a CurrentJDK, y si quiero usar una versión diferente, tendré que cambiar el enlace a CurrentJdk ¿verdad? Pero lo que es confuso para mí es que, como puede ver a continuación, todas mis versiones apuntan al mismo CurrentJDK, lo que significa que todas las versiones apuntan a la versión actual. Esperaba que solo uno de ellos apuntara a CurrentJDK y podría cambiarlo por uno que necesite, que no es el caso aquí. Todo lo que necesito saber es cómo encontrar la ruta de la carpeta bin (Comandos) para cada versión, de modo que pueda usarla para apuntar a CurrentJDK. También dígame cómo cambiar el enlace a CurrentJDK.Mac OS X 10.6.7 Ruta de Java Corriente JDK confuso

$ java -version 

java version "1.6.0_24" 
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326) 
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode) 

$ pwd 

/System/Library/Frameworks/JavaVM.framework/Versions 


$ ls -l 

lrwxr-xr-x 1 root wheel 5 Mar 20 11:12 1.3 -> 1.3.1 
drwxr-xr-x 3 root wheel 102 Dec 2 2009 1.3.1 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.4 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.4.2 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.5 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.5.0 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.6 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Mar 20 11:12 1.6.0 -> CurrentJDK 
drwxr-xr-x 10 root wheel 340 Mar 20 11:13 A 
lrwxr-xr-x 1 root wheel 1 Mar 20 11:12 Current -> A 
lrwxr-xr-x 1 root wheel 59 Mar 20 11:12 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 
+0

ejecuta 'which java' para reconocer qué versión está utilizando actualmente.luego ejecute '/ usr/libexec/java_home -version '. Imprimirá la carpeta de inicio de java relacionada. –

Respuesta

14

Lo más probable es que solo tenga una jdk instalada, por lo tanto, todos los enlaces suaves apuntan a la misma jdk. Sin embargo, si tiene varios jdks instalados, deberá elegir cuál usar con la aplicación 'Preferencias de Java' en su/Aplicación/Utilidades.

Los enlaces suaves son, por cierto, creados con el comando ln -s de la Terminal.

+0

Veo lo que dices. Miré las Preferencias de Java y parece que tengo una sola versión de Java SE 6. Entonces, si tuviera varias versiones, ¿si solo habilitara una de ellas, mi CurrentJDK se apunta a la versión seleccionada? De hecho, necesitaba usar tanto Java 5 como 1.6. Como ya tengo 6, ¿todavía es posible instalar la versión 5 sin atornillar la versión 6 existente? – reddyvaribabu

+0

Sí, puede tener tanto 1.5 como 1.6. Y para los programas lanzados desde la línea de comando, aún puede configurar JAVA_HOME para que apunte al jdk deseado. El jdk establecido por 'Preferencias de Java' es el jdk utilizado por el sistema, y ​​cuando los programas se abren al hacer clic en íconos. –

+0

Ahora veo que mi JAVA_HOME está vacío. ¿Significa que configurar JAVA_HOME no es obligatorio y solo habilitar en la utilidad de preferencias de Java es suficiente para apuntar la versión requerida a CurrentJDK? – reddyvaribabu

57

Para diferentes tipos de JDK o instalaciones, tendrá diferentes rutas.

en Mac OS X Mavericks, el camino me encontré con la siguiente manera:

1) incorporado por defecto JRE:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 

2) JDK descargados de Apple:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/ 

3) JDK descargados de Oracle:

/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home 
3

Sólo tiene que ejecutar comandos siguientes:

$ brew update 
$ brew install jenv 
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile 
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile 
$ source ~/.bash_profile 

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/ 
    oracle64-1.8.0.45 added 
    1.8.0.45 added 
    1.8 added 

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home 
    oracle64-1.7.0.79 added 
    1.7.0.79 added 
    1.7 added 

$ jenv versions 
* system (set by /Users/wanluwang/.jenv/version) 
    1.7 
    1.7.0.79 
    1.8 
    1.8.0.45 
    oracle64-1.7.0.79 
    oracle64-1.8.0.45 

$ java -version 
    java version "1.8.0_45" 
    Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

$ jenv global oracle64-1.7.0.79 

$ java -version 
    java version "1.7.0_79" 
    Java(TM) SE Runtime Environment (build 1.7.0_79-b15) 
    Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) 
+0

Rajas-MacBook-Pro:/$ $ brew update -bash: $: comando no encontrado Rajas-MacBook-Pro:/$ $ brew install jenv -bash: $: comando no encontrado Rajas-MacBook-Pro:/$ $ echo 'export PATH = "$ HOME/.jenv/bin: $ PATH" '>> ~/.bash_profile -bash: $: comando no encontrado Rajas-MacBook-Pro:/$ $ echo' eval "$ (jenv init -)" '>> ~/.bash_profile -bash: $: comando no encontrado Rajas-MacBook-Pro:/$ $ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home -bash: agregar: comando no encontrado – raja777m

+0

@ raja777m ~ No es necesario incluir el '$' inicial en la ejecución de su comando en el terminal. Déjalo y todo debería funcionar. –

0

de Apple Técnica Q & Un Java Preguntas:

Preferencias del usuario

En Mac OS X, el tiempo de ejecución de Java proporciona la API que es java.util.prefs respaldado por la API y los directorios de Preferencias de Mac OS X estándar. Simplemente usando esta API pura de Java lee y almacena las preferencias de su aplicación en ~/Library/Preferences en un archivo de lista de propiedades de Mac OS X. Para aplicaciones que ya pueden tener su propio formato de preferencias, estas preferencias también deben almacenarse en el directorio ~/Library/Preferences. Se puede llegar a este directorio desde el código Java creando un archivo con la ruta de acceso de System.getProperty ("user.home") + "/ Library/Preferences /" + "com.example.your.Application". Una aplicación que debería tener preferencias globales en todos los usuarios podría residir en/Library/Preferences, sin embargo, este directorio no puede ser escrito por usuarios que no sean administradores.

0

conjunto $ JAVA_HOME = $ (/ usr/libexec/inicio_java) en su .bash_profile

o export JAVA_HOME = $ (/ usr/libexec/inicio_java);

echo $ JAVA_HOME