Używaj określonej wersji JRE / JDK dla określonych programów

Używam ArchLinux i IDE o nazwie PyCharm. Na swojej stronie pobierania zaleca używanie języka Java 6 zamiast OpenJDK. ArchLinux ma pakiet OpenJDK (jdk7-openjdk), który zainstalowałem, zainstalowałem i na podstawie tego, co przeczytałem w Arch Wiki w Javie , powinno być możliwe zainstalowanie Oracle Java 6 obok OpenJDK 7 za pośrednictwem pakietów o nazwach jdk6-compat i jre6-compat, które instalują te wersje Javy w /opt/ zamiast w normalnej lokalizacji.

Jednak po zainstalowaniu jdk6-compat i jre6-compat, nadal widzę, że używam OpenJDK 7, gdy uruchamiam następujące:

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

… nawet po ustawili JAVA_HOME i dodali /opt/java6/bin do mojego PATH w moim .zshrc plik.

Jak mogę sprawić, aby PyCharm (lub inne aplikacje) używały Oracle Java 6 zamiast OpenJDK?

Dziękuję i przepraszam, jeśli napisałem w niewłaściwym miejscu.

Inne informacje, które mogą być pomocne:

  • Używanie Gnome 3 jako DE

Odpowiedź

Jeśli chcę użyć innej wersji Java Robię dwie rzeczy:

  • Najpierw ustawiam JAVA_HOME jako odpowiednie dla tej instalacji Javy i wyeksportuję ją.
  • Następnie zaktualizuj moją ścieżkę o `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Ze względu na sposób, w jaki PATH jest przeszukiwane, jeśli dodasz na końcu ścieżki, nowa wersja nie będzie używana. Cokolwiek dodane na końcu ścieżki dodaje tylko nowe polecenia, nie zastępuje istniejących poleceń. Wcześniejsze dodanie do zmiennej PATH spowoduje użycie polecenia w nowym katalogu zamiast innego polecenia.

Polecenia takie jak java często zawierają wiele dowiązań symbolicznych, zanim przejdziesz do programu. Użycie ${JAVA_HOME}/bin omija wszelkie pośrednie i zapewnia bezpośrednią ścieżkę do różnych poleceń związanych z Javą.

EDYCJA: Jeśli chcesz uruchamiać tylko niektóre programy z inną wersją Javy można użyć takiego opakowania:

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

Następnie można wywołać opakowanie za pomocą polecenia takiego jak.

javawrapper /opt/java6 PyCharm 

Możesz także dodać alias do swojego pliku ~/.bashrc w ten sposób

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Komentarze

  • Cóż, to rozwiązuje połowę problemu; Dodawałem do końca, a nie do początku $PATH. Ale jak uruchomić różne wersje oprogramowania Java tylko dla niektórych aplikacji?
  • ' zaktualizowałem swoją odpowiedź. Jednak w przypadku takim jak twój rzadko muszę utrzymywać programy w domyślnej wersji Java.

Odpowiedź

ArchLinux przechowuje różne JDK w katalogu / usr / lib / jvm, zmiana domyślnego JDK jest kwestią modyfikacji tam dowiązań symbolicznych:

# 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 ma do tego specjalny skrypt:

# archlinux-java set java-10-openjdk 

i otrzymujesz:

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

możesz także użyć opcji „napraw” i „stan”:

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

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *