configurando JAVA correctamente en MAC

0

Soy nuevo en Mac (procedente del mundo de Windows). Hice algunas lecturas sobre cómo y dónde se establece JAVA HOME en una máquina mac. Tengo algunas suposiciones que se enumeran a continuación, sería genial si alguien pudiera revisarlas y proporcionar alguna información sobre el mismo.

  • / Library / Java / JavaVirtualMachines es donde veo jdk 1.7 y jdk 1.8 instalados. En el futuro, si instalo más versiones de JDK, supongo que se instalarán en esta ruta.

  • Veo que / System / Library / Java / JavaVirtualMachines / tiene 1.6.0.jdk instalado. ¿Supongo que este es el Java 6 de Apple que se instaló con mi Mac de forma predeterminada? Además, ¿cuál es la diferencia entre instalar un JDK en / Library / Java / JavaVirtualMachines vs / System / Library / Java / JavaVirtualMachines /.

  • / usr / libexec / java_home -V es una utilidad que enumera todos los jvm; s en la máquina. Con razón veo JVM 1.6 (x86, i386), 1.7 y 1.8. He agregado "exportar JAVA_HOME = /usr/libexec/java_home " en mi .bash_profile para configurar mi java_home en JDK 1.8.

  • / System / Library / Frameworks contiene un montón de accesos directos dentro de él. Realmente no quiero dedicar tiempo a comprender los marcos en este punto, pero parece ser un tipo de capa de redirección para decidir qué JVM usar. Hay una carpeta llamada /System/Library/Frameworks/JavaVM.framework/Versions que contiene un montón de accesos directos (1.4, 1.6, 1.6.0, etc.) que apuntan a CurrentJDK. CurrentJDK es un acceso directo a jdk 1.6 (/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents)

¿Qué implicación tiene esto? Qué ocurre si JAVA_HOME apunta a JDK 1.8 y /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK apunta a jdk 1.6.

¿Esto significa que cuando cambiamos JAVA_HOME, también debemos cambiar /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK?

  • Hay otra carpeta llamada /System/Library/Frameworks/JavaVM.framework/Versions/Current/ que es un acceso directo a /System/Library/Frameworks/JavaVM.framework/Versions/A. Ahora, leí en algún post que
      

    Los ejecutables java en > /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java no son los ejecutables que simplemente ejecutan el compilador java, etc. Son envoltorios que > use / usr / libexec / java_home para encontrar los ejecutables.

  •   
  Supongo que los programas obtienen el último java de /System/Library/Frameworks/JavaVM.framework/Versions/Current/ y si /System/Library/Frameworks/JavaVM.framework/Versions/Current/ uses / usr / libexec / java_home para encontrar los ejecutables entonces terminaría usando jdk 1.8 en mi caso. ¿Es esta suposición correcta?
  • Por lo tanto, parece que hay 4 variables aquí, a las que apunta $ JAVA_HOME, donde / usr / libexec / java_home te lleva, a dónde apunta /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK y, finalmente, a dónde apunta /System/Library/Frameworks/JavaVM.framework/Versions/Current. Sería genial si alguien pudiera comentar sobre la forma correcta de configurar JAVA_HOME para que todas las aplicaciones, ventanas de terminal, etc. usen la misma versión de JVM.
pregunta nev.m 24.05.2015 - 04:18

1 respuesta

1

El único que importa si se ejecuta a través de / usr / bin / java es el valor de JAVA_HOME y se puede configurar para todos los terminales, por ejemplo. para obtener la última versión 1.7 agregada a su script de inicio de shell (por ejemplo, ~ / .bashrc)

export JAVA_HOME='/usr/libexec/java_home -v '1.7*'

Lamentablemente, las aplicaciones (es decir, la GUI instalada como paquetes de aplicaciones OS X, por ejemplo, Eclipse) acceden al java que se configura en la información de su paquete (que puede ser una ruta completa a una en / Library o / System / Library o podría ser / usr / bin / java) por lo que deben ser analizados caso por caso.

La diferencia entre instalar un JDK en / Library / Java / JavaVirtualMachines vs / System / Library / Java / JavaVirtualMachines / es que este último es instalado por Apple como parte del sistema operativo y el otro es por un tercero

El CurrentJDK es la forma en que las versiones de Apple de los sistemas operativos OS X - en el caso de Java, no creo que importe ahora (en los 1.7 días anteriores podría haber sido cómo funcionaba la antigua pestaña de preferencias de Java, pero eso es una suposición)

    
respondido por el Mark 25.05.2015 - 10:50

Lea otras preguntas en las etiquetas