Brug en bestemt version af JRE / JDK til bestemte programmer

Jeg bruger ArchLinux og en IDE kaldet PyCharm. På sin downloadside anbefaler den at bruge Java 6 i stedet for OpenJDK. ArchLinux har en OpenJDK-pakke (jdk7-openjdk), som jeg har installeret, installeret og ud fra det, jeg havde læst i Arch Wiki på Java , skulle det være muligt at installere Oracle Java 6 langs OpenJDK 7 via en pakke kaldet jdk6-compat og jre6-compat, disse versioner af Java i /opt/ i stedet for den normale placering.

Efter installation af jdk6-compat og jre6-compat, jeg ser stadig, at jeg kører OpenJDK 7, når jeg kører følgende:

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

… selv efter jeg har indstillet JAVA_HOME og tilføjet /opt/java6/bin til min PATH i min .zshrc -fil.

Hvordan kan jeg få PyCharm (eller andre applikationer) til at bruge Oracle Java 6 i stedet for OpenJDK?

Tak og undskyld, hvis jeg har sendt det forkerte sted.

Andre oplysninger, der kan være nyttige:

  • Brug af Gnome 3 som DE

Svar

Hvis jeg vil bruge en anden version af Java gør jeg to ting:

  • Indstil først JAVA_HOME som relevant for den installation af Java, og eksporter den.
  • Opdater derefter min sti med PATH = $ {JAVA_HOME} / bin: $ {PATH}.

På grund af den måde er PATH søgte, hvis du tilføjer til slutningen af stien, vil den nye version ikke blive brugt. Alt tilføjet til slutningen af stien tilføjer kun nye kommandoer, det erstatter ikke eksisterende kommandoer. Forhåndsvisning af variablen PATH bruger kommandoen i den nye mappe frem for en anden kommando.

Kommandoer som java involverer ofte et antal symbolske links, før du kommer til programmet. Brug af ${JAVA_HOME}/bin omgår eventuelle indirektioner og giver en direkte sti til de forskellige Java-relaterede kommandoer.

EDIT: Hvis du kun vil køre bestemte programmer med en anden version på Java kan du bruge en indpakning som denne:

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

Du kan derefter ringe til indpakningen med en kommando som.

javawrapper /opt/java6 PyCharm 

Du kan også tilføje et alias til din ~/.bashrc -fil som denne

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Kommentarer

  • Nå, det løser halvdelen af problemet; Jeg tilføjede til slutningen snarere end begyndelsen på $PATH. Men hvordan kører jeg kun den anden version af Java til bestemte applikationer?
  • Jeg ' har opdateret mit svar. I et tilfælde som dit har jeg dog sjældent brug for at holde programmer ved hjælp af standard Java-versionen.

Svar

ArchLinux beholder de forskellige JDKer i / usr / lib / jvm biblioteket, ændring af standard JDK er et spørgsmål om at ændre de symbolske links der:

# 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 et specielt script til det:

# archlinux-java set java-10-openjdk 

og 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 også bruge indstillingerne “fix” og “status”:

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

Kommentarer

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *