Använd viss version av JRE / JDK för vissa program

Jag använder ArchLinux och en IDE som heter PyCharm. På sin nedladdningssida rekommenderar den att du använder Java 6 istället för OpenJDK. ArchLinux har ett OpenJDK-paket (jdk7-openjdk) som jag har installerat, installerat och från vad jag hade läst i Arch Wiki på Java borde det vara möjligt att installera Oracle Java 6 längs sidan OpenJDK 7 via ett paket som heter jdk6-compat och jre6-compat dessa versioner av Java i /opt/ istället för den normala platsen.

Efter installation av jdk6-compat och jre6-compat, jag ser fortfarande att jag kör OpenJDK 7 när jag kör följande:

% java -version java version "1.7.0_09" OpenJDK Runtime Environment (IcedTea7 2.3.3) (ArchLinux build 7.u9_2.3.3-1-x86_64) OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode) 

… även efter att jag har ställt in JAVA_HOME och lagt till /opt/java6/bin till min PATH i min .zshrc -fil.

Hur kan jag få PyCharm (eller andra applikationer) att använda Oracle Java 6 istället för OpenJDK?

Tack och ber om ursäkt om jag har skrivit fel plats.

Annan information som kan vara till hjälp:

  • Använda Gnome 3 som DE

Svar

Om jag vill använda en annan version på Java gör jag två saker:

  • Ställ först in JAVA_HOME för den installationen av Java och exportera den.
  • Uppdatera sedan min sökväg med `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

På grund av sättet är PATH sökte, om du lägger till i slutet av sökvägen kommer den nya versionen inte att användas. Allt som läggs till i slutet av sökvägen lägger bara till nya kommandon, det ersätter inte befintliga kommandon. Att förbereda sig för variabeln PATH använder kommandot i den nya katalogen framför andra kommandon.

Kommandon som java involverar ofta ett antal symboliska länkar innan du kommer till programmet. Att använda ${JAVA_HOME}/bin kringgår alla riktningar och ger en direkt sökväg till olika Java-relaterade kommandon.

EDIT: Om du bara vill köra vissa program med en annan version på Java kan du använda ett sådant omslag:

#!/bin/bash # javawrapper - replace Java for a command. export JAVA_HOME=$1; shift PATH=${JAVA_HOME}/bin:$PATH $* 

Du kan sedan ringa omslaget med ett kommando som.

javawrapper /opt/java6 PyCharm 

Du kan också lägga till ett alias i din ~/.bashrc -fil så här

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Kommentarer

  • Nåväl, det löser hälften av problemet; Jag lade till slutet snarare än början på $PATH. Men hur kör jag bara den andra versionen av Java för vissa applikationer?
  • Jag ' har uppdaterat mitt svar. I ett fall som ditt behöver jag dock sällan behålla program med Java-standardversionen.

Svar

ArchLinux behåller olika JDK i katalogen / usr / lib / jvm, att ändra standard JDK handlar om att ändra de symboliska länkarna där:

# ls -al /usr/lib/jvm lrwxrwxrwx 1 root root 14 May 31 19:58 default -> java-8-openjdk lrwxrwxrwx 1 root root 18 May 31 19:58 default-runtime -> java-8-openjdk/jre drwxr-xr-x 7 root root 4096 May 27 21:45 java-10-openjdk drwxr-xr-x 6 root root 4096 May 31 14:35 java-8-openjdk drwxr-xr-x 7 root root 4096 May 31 19:56 java-9-openjdk 

Arch har ett speciellt manus för det:

# archlinux-java set java-10-openjdk 

och du får:

# java -version openjdk version "10.0.1" 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10) OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode) 

Du kan också använda alternativen ”fixa” och ”status”:

# archlinux-java fix # archlinux-java status Available Java environments: java-10-openjdk (default) java-8-openjdk java-9-openjdk 

Kommentarer

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *