GNU/Linux >> Znalost Linux >  >> Linux

Příkaz „java“ nespustí JVM, který byl nainstalován

Problém

JDK/JRE od společnosti Oracle byl nainstalován na počítači se systémem Linux podle pokynů k instalaci. Příkaz „java“ nespustí JVM, který byl nainstalován. Aplikace Java se nemusí spustit, pokud je nalezeno neočekávané prostředí Java Runtime Environment.

Příklad ze serveru 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)

Odmítnutí odpovědnosti :Adresáře a cesty použité v tomto článku představují fiktivní ukázkové názvy, které tvoří příklad. Jakákoli podobnost se skutečným kódem je čistě náhodná a není zamýšlena jiným způsobem.

Řešení

Nový JDK/JRE od společnosti Oracle byl nainstalován podle pokynů k instalaci. Příklad ze serveru Red Hat:

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

Příkaz „java“ je obvykle symbolický odkaz v /usr/bin, který ukazuje (přímo nebo nepřímo) na skutečný spustitelný soubor Java. /usr/bin je obvykle jednou z prvních položek v proměnné prostředí PATH, a proto /usr/bin/java je obvykle ten, který je po spuštění Java nalezen jako první.

Pro následující možná řešení předpokládejme, že jste nainstalovali JDK do /usr/java/jdk1.7.0_06/.

Řešení 1:Upravte PATH

Upravte proměnnou prostředí PATH tak, aby bylo možné najít nové Oracle JRE/JDK dříve, než bude možné nalézt jakékoli jiné prostředí JRE.

Například:

$ 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)

Řešení 2:Použijte absolutní cestu

Ke spuštění aplikací Java použijte úplnou absolutní cestu k nově nainstalovanému Oracle JRE/JDK.

Například:

$ /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)

Řešení 3:Použijte alternativy aktualizace

Použijte příkaz s názvem update-alternatives abyste Linuxu řekli, kde najde Oracle JRE/JDK, který jste právě nainstalovali.

Poznámka :ruční oprava symbolických odkazů jako /usr/bin/java nebo /etc/alternatives/java může způsobit, že příkaz update-alternatives zobrazí nesprávné hodnoty nebo se dokonce nespustí. Proto se doporučuje použít příkaz update-alternatives k instalaci a konfiguraci požadovaných symbolických odkazů namísto ruční úpravy symbolických odkazů.

Použijte „su“ na RedHat, použijte „sudo“ na 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) 

Pro více informací prosím navštivte manuálovou stránku update-alternatives.

$ man update-alternatives


Linux
  1. Jak spustit příkaz jako správce systému (root)?

  2. Rozdíl mezi vestavěným příkazem a příkazem, který není?

  3. Co se stane s výstupem procesu, který byl odmítnut a ztratil svůj terminál?

  1. Zablokovat/zabránit příkazu, pokud byl proveden během posledních X sekund/minut?

  2. Nastavení +a Nezruší nastavení příznaku -a?

  3. Zařízení Linux po změně velikosti nezobrazuje správné místo na disku

  1. vytvoření java balíčku v příkazovém řádku

  2. Příkaz sed pro Linux nemění cílový soubor

  3. npm příkaz 'serve' nebyl nalezen, ačkoli je nainstalován