Bruk en viss versjon av JRE / JDK for visse programmer

Jeg bruker ArchLinux, og en IDE som heter PyCharm. På sin nedlastingsside anbefaler den å bruke Java 6 i stedet for OpenJDK. ArchLinux har en OpenJDK-pakke (jdk7-openjdk) som jeg har installert, installert og fra det jeg hadde lest i Arch Wiki på Java , bør det være mulig å installere Oracle Java 6 langs OpenJDK 7 via en pakke kalt jdk6-compat og jre6-compat disse versjonene av Java i /opt/ i stedet for den normale plasseringen.

Imidlertid, etter å ha installert jdk6-compat og jre6-compat, jeg ser fortsatt at jeg kjører OpenJDK 7 når jeg kjø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 etter at jeg har satt JAVA_HOME og lagt til /opt/java6/bin til PATH i min .zshrc -fil.

Hvordan kan jeg få PyCharm (eller andre applikasjoner) til å bruke Oracle Java 6 i stedet for OpenJDK?

Takk og beklager hvis jeg har lagt ut på feil sted.

Annen informasjon som kan være nyttig:

  • Bruker Gnome 3 som DE

Svar

Hvis jeg vil bruke en annen versjon av Java gjør jeg to ting:

  • Sett først JAVA_HOME etter behov for den installasjonen av Java og eksporter den.
  • Oppdater deretter banen min med `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

På grunn av måten PATH er søkte, hvis du legger til i enden av banen, vil den nye versjonen ikke brukes. Alt som legges til på slutten av banen, legger bare til nye kommandoer, det erstatter ikke eksisterende kommandoer. Forhåndsbetaling til PATH -variabelen bruker kommandoen i den nye katalogen i stedet for en annen kommando.

Kommandoer som java involverer ofte en rekke symbolske lenker før du kommer til programmet. Å bruke ${JAVA_HOME}/bin omgår eventuelle indireksjoner, og gir en direkte vei til de forskjellige Java-relaterte kommandoene.

EDIT: Hvis du bare vil kjøre visse programmer med en annen versjon på Java kan du bruke en innpakning som denne:

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

Du kan da ringe innpakningen med en kommando som.

javawrapper /opt/java6 PyCharm 

Du kan også legge til et alias i ~/.bashrc -filen slik

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Kommentarer

  • Vel, det løser halvparten av problemet; Jeg la til slutten, snarere enn begynnelsen på $PATH. Men hvordan kjører jeg bare den forskjellige versjonen av Java for visse applikasjoner?
  • Jeg ' har oppdatert svaret mitt. I et tilfelle som ditt har jeg imidlertid sjelden behov for å beholde programmer som bruker standard Java-versjon.

Svar

ArchLinux beholder de forskjellige JDK-ene i katalogen / usr / lib / jvm. Endring av standard JDK er et spørsmål om å endre de symbolske koblingene 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 spesielt skript for 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å bruke alternativene «fikse» og «status»:

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

Kommentarer

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *