Verwenden Sie für bestimmte Programme eine bestimmte Version von JRE / JDK

7

Ich benutze ArchLinux und eine IDE namens PyCharm. Auf der Download-Seite wird die Verwendung von Java 6 anstelle von OpenJDK empfohlen. ArchLinux verfügt über ein OpenJDK-Paket ( jdk7-openjdk), das ich installiert und installiert habe. Nach dem, was ich im Arch Wiki auf Java gelesen habe , sollte es möglich sein, Oracle Java 6 neben OpenJDK 7 über ein Paket namens jdk6-compatund zu jre6-compatinstallieren, das diese Versionen installiert von Java in /opt/anstelle des normalen Standorts.

Nach der Installation von jdk6-compatund jre6-compatsehe ich jedoch immer noch, dass ich OpenJDK 7 ausführe, wenn ich Folgendes ausführe:

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

... auch nachdem ich eingestellt haben JAVA_HOMEund hinzugefügt , /opt/java6/binum meine PATHin meiner .zshrcDatei.

Wie kann ich PyCharm (oder andere Anwendungen) dazu bringen, Oracle Java 6 anstelle von OpenJDK zu verwenden?

Vielen Dank und Entschuldigung, wenn ich am falschen Ort gepostet habe.

Weitere hilfreiche Informationen:

  • Verwenden von Gnome 3 als DE
NT3RP
quelle

Antworten:

4

Wenn ich eine andere Version von Java verwenden möchte, mache ich zwei Dinge:

  • JAVA_HOMEStellen Sie zunächst die für diese Installation von Java geeignete Einstellung ein und exportieren Sie sie.
  • Aktualisieren Sie dann meinen Pfad mit `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Aufgrund der Art und Weise, PATHwie gesucht wird, wird die neue Version nicht verwendet, wenn Sie am Ende des Pfads hinzufügen. Alles, was am Ende des Pfads hinzugefügt wird, fügt nur neue Befehle hinzu und ersetzt keine vorhandenen Befehle. Wenn Sie der PATHVariablen voranstellen, wird der Befehl im neuen Verzeichnis gegenüber anderen Befehlen bevorzugt.

Befehle wie javaoft beinhalten eine Reihe symbolischer Links, bevor Sie zum Programm gelangen. Die Verwendung ${JAVA_HOME}/binumgeht alle Indirektionen und bietet einen direkten Pfad zu den verschiedenen Java-bezogenen Befehlen.

BEARBEITEN: Wenn Sie nur bestimmte Programme mit einer anderen Java-Version ausführen möchten, können Sie einen Wrapper wie den folgenden verwenden:

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

Sie können den Wrapper dann mit einem Befehl wie aufrufen.

javawrapper /opt/java6 PyCharm

Sie können Ihrer ~/.bashrcDatei auch einen solchen Alias ​​hinzufügen

alias PyCharm='javawrapper /opt/java6 PyCharm'
BillThor
quelle
Nun, das löst das halbe Problem. Ich habe eher an das Ende als an den Anfang von angehängt $PATH. Aber wie führe ich die unterschiedliche Version von Java nur für bestimmte Anwendungen aus?
NT3RP
Ich habe meine Antwort aktualisiert. In einem Fall wie Ihrem muss ich jedoch selten Programme mit der Standard-Java-Version beibehalten.
BillThor
6

ArchLinux speichert die verschiedenen JDKs im Verzeichnis / usr / lib / jvm. Wenn Sie das Standard-JDK ändern, müssen Sie die symbolischen Links dort ändern:

# 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 hat dafür ein spezielles Skript:

# archlinux-java set java-10-openjdk

und du bekommst:

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

Sie können auch die Optionen 'Fix' und 'Status' verwenden:

# archlinux-java fix
# archlinux-java status
Available Java environments:
  java-10-openjdk (default)
  java-8-openjdk
  java-9-openjdk
mwohlf
quelle
1
Ich weiß nicht, warum die Antwort nicht akzeptiert wird.
Herrgott