GNU/Linux >> Linux Esercitazione >  >> Linux

Il comando "java" non esegue la JVM che è stata installata

Il problema

Un JDK/JRE di Oracle è stato installato su una macchina Linux secondo le istruzioni di installazione. Il comando "java" non esegue la JVM che è stata installata. Le applicazioni Java potrebbero non funzionare se viene rilevato un Java Runtime Environment imprevisto.

Esempio da un server Red Hat:

$ java -version
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

Disclaimer :le directory e i percorsi utilizzati in questo articolo rappresentano nomi di esempio fittizi che costituiscono un esempio. Qualsiasi somiglianza con il codice reale è puramente casuale e non intesa in nessun altro modo.

La soluzione

Un nuovo JDK/JRE di Oracle è stato installato secondo le istruzioni di installazione. Esempio da un server Red Hat:

# rpm -ivh jdk-7u6-linux-x64.rpm

Il comando "java" è solitamente un collegamento simbolico in /usr/bin che punta (direttamente o indirettamente) all'effettivo eseguibile Java. Solitamente /usr/bin è una delle prime voci nella variabile di ambiente PATH e quindi /usr/bin/java è solitamente quella che viene trovata per prima se Java viene avviato.

Per le seguenti possibili soluzioni, supponiamo di aver installato JDK in /usr/java/jdk1.7.0_06/.

Soluzione 1:modifica il PERCORSO

Modificare la variabile di ambiente PATH in modo che il nuovo Oracle JRE/JDK possa essere trovato prima che sia possibile trovare qualsiasi altro JRE.

Ad esempio:

$ export PATH=/usr/java/jdk1.7.0_06/bin:$PATH
$ java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

Soluzione 2:usa un percorso assoluto

Utilizzare il percorso assoluto completo per Oracle JRE/JDK appena installato per eseguire le applicazioni Java.

Ad esempio:

$ /usr/java/jdk1.7.0_06/bin/java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

Soluzione 3:usa alternative di aggiornamento

Usa il comando chiamato alternative di aggiornamento per dire a Linux dove trovare Oracle JRE/JDK che hai appena installato.

Nota :la correzione manuale di collegamenti simbolici come /usr/bin/java o /etc/alternatives/java può far sì che il comando update-alternatives visualizzi valori errati o addirittura non si avvii. Pertanto si consiglia di utilizzare il comando update-alternatives per installare e configurare i collegamenti simbolici desiderati invece di modificare i collegamenti simbolici manualmente.

Usa "su" su RedHat, usa "sudo" su Ubuntu:

$ su -
# update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.7.0_06/bin/java" 1
# update-alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   3           /usr/java/jdk1.7.0_06/bin/java

Enter to keep the current selection[+], or type selection number: 3
# exit
$ java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode) 

Per ulteriori informazioni, consultare la pagina man di update-alternatives.

$ man update-alternatives


Linux
  1. Come eseguire un comando come amministratore di sistema (root)?

  2. La differenza tra un comando integrato e uno che non lo è?

  3. update-alternatives:comando non trovato

  4. Come funziona il comando ps?

  5. Che cosa significa esattamente il dispositivo di input non è un TTY nell'output di docker run?

Cosa succede all'output di un processo che è stato rinnegato e ha perso il suo terminale?

L'utilità del comando :nello scripting della shell, dato che non fa nulla in modo esplicito?

Imposta +a non disattiva il flag -a?

Il dispositivo Linux non mostra lo spazio su disco corretto dopo un ridimensionamento

Come impostare l'utente predefinito per una distribuzione WSL che è stata installata manualmente con wsl --import

Il comando npm 'serve' non è stato trovato, sebbene sia installato