Perché ho 3 diverse versioni Java sul mio Mac?

1

oggi mi occupavo della mia versione Java e mi sono confuso molto. Ne ho trovati tre diversi:

  • Se guardo in Webstorm usa: 1.6.0_65
  • Se creo java -version, ottengo: 1.7.0_45
  • Se guardo nelle impostazioni di sistema ottengo: 1.8.0_45

Che cosa posso fare per avere una sola versione Java di sistema che sarà la versione che aggiorno tramite le mie impostazioni di sistema: 1.8.0_45?

    
posta gurehbgui 16.04.2015 - 12:54
fonte

2 risposte

1

In alcuni termini si tratta di un malinteso, ma spero che diventi presto più chiaro:

Il JRE / JDK in confezione Apple è sempre installato in /System/Library/Frameworks/JavaVM.framework/Versions/Current , dove "Corrente" è un collegamento che punta alla versione attuale. Pertanto, puoi avere più versioni installate e utilizzare più versioni in Xcode o altri IDE.

Oracle e i suoi installatori installano il loro JDK / JRE in /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home per il plugin webbrowser e l'intero JRE / JDK in /Library/Java/JavaVirtualMachines/ .

Inoltre, i pacchetti software possono venire con il loro pacchetto JDK / JRE. Ad esempio, HP Peregrine Service Center lo fa.

Quindi, quando ogni applicazione viene fornita con il proprio JDK / JRE, è necessario indicare in una configurazione quale utilizzare. In generale, per tutte le applicazioni basate su shell esiste una variabile d'ambiente che di solito si imposta per questo e si chiama JAVA_HOME. Un software come Tomcat rispetta questo.

Dai un'occhiata più da vicino a questo:

endor-2:~ garex$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_45, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    1.7.0_71, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

Con il seguente comando java_home si passa in modo permanente a Java 1.8 64 bit:

endor-2:~ garex$ java -fullversion
java full version "1.7.0_71-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
endor-2:~ garex$ which java
/usr/bin/java
endor-2:~ garex$ 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)

Ma ricorda: puoi farlo, ma non aspettarti che alcuni software seguano questo. Nel mio caso ho installato JRE e JDK.

Usando il comando java_home nello script chiamante puoi sempre configurare la versione corretta per la tua applicazione, ad es.

endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64 -exec java -fullversion
java full version "1.8.0_45-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.7.0 -d64 -exec java -fullversion
java full version "1.7.0_71-b14"

Per rimuovere in modo permanente il file 1.7.x, leggi link

    
risposta data 17.04.2015 - 09:20
fonte
1

Diverse applicazioni si collegheranno a diverse librerie Java. Le app più vecchie richiedono molto probabilmente Java 6 (1.6.0_65), mentre le app più recenti si collegheranno rispettivamente alle nuove versioni di Java.

A titolo di esempio, so che l'app Mobile Connect per il mio vecchio modem Huawei 3G richiede l'installazione di Java 6, Adobe Photoshop CS6 richiede Java 7 (IIRC) e molto probabilmente i browser richiederanno di eseguire l'ultima versione di Java , che è Java 8.

    
risposta data 16.04.2015 - 21:56
fonte

Leggi altre domande sui tag