Gebruik een bepaalde versie van JRE / JDK voor bepaalde programmas

Ik gebruik ArchLinux en een IDE genaamd PyCharm. Op zijn downloadpagina raadt het aan om Java 6 te gebruiken in plaats van OpenJDK. ArchLinux heeft een OpenJDK-pakket (jdk7-openjdk) dat ik heb geïnstalleerd, geïnstalleerd en van wat ik had gelezen in de Arch Wiki op Java , zou het mogelijk moeten zijn om Oracle Java 6 naast OpenJDK 7 te installeren via een pakket genaamd jdk6-compat en jre6-compat, die deze versies van Java in /opt/ in plaats van de normale locatie.

Na installatie van jdk6-compat en jre6-compat, ik zie nog steeds dat ik OpenJDK 7 draai als ik het volgende draai:

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

… zelfs nadat ik heb JAVA_HOME ingesteld en /opt/java6/bin toegevoegd aan mijn PATH in mijn .zshrc bestand.

Hoe kan ik PyCharm (of andere applicaties) ertoe brengen Oracle Java 6 te gebruiken in plaats van OpenJDK?

Bedankt, en excuses als ik heb gepost op de verkeerde plaats.

Andere informatie die nuttig kan zijn:

  • Gnome 3 als DE gebruiken

Antwoord

Als ik een andere versie wil gebruiken van Java doe ik twee dingen:

  • Stel eerst JAVA_HOME in zoals geschikt voor die installatie van Java en exporteer het.
  • Werk vervolgens mijn pad bij met `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Vanwege de manier waarop de PATH is gezocht, als u aan het einde van het pad toevoegt, wordt de nieuwe versie niet gebruikt. Alles wat aan het einde van het pad wordt toegevoegd, voegt alleen nieuwe commandos toe, het vervangt geen bestaande commandos. Voorbereiden op de PATH variabele zal het commando in de nieuwe map gebruiken in plaats van andere commandos.

Commandos zoals java bevatten vaak een aantal symbolische links voordat u bij het programma komt. Het gebruik van ${JAVA_HOME}/bin omzeilt alle indirecte informatie en biedt een direct pad naar de verschillende Java-gerelateerde commandos.

BEWERKEN: Als je alleen bepaalde programmas met een andere versie wilt draaien van Java zou je een wrapper als volgt kunnen gebruiken:

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

Je kunt dan de wrapper aanroepen met een commando zoals.

javawrapper /opt/java6 PyCharm 

U kunt ook op deze manier een alias toevoegen aan uw ~/.bashrc -bestand

alias PyCharm="javawrapper /opt/java6 PyCharm" 

Reacties

  • Nou, dat lost de helft van het probleem op; Ik voegde toe aan het einde, in plaats van aan het begin van $PATH. Maar hoe voer ik alleen de verschillende versies van Java uit voor bepaalde toepassingen?
  • Ik ' heb mijn antwoord bijgewerkt. In een geval als het uwe heb ik echter zelden programmas nodig die de standaard Java-versie gebruiken.

Answer

ArchLinux bewaart de verschillende JDKs in de / usr / lib / jvm directory, het veranderen van de standaard JDK is een kwestie van de symbolische links daar aanpassen:

# 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 heeft daarvoor een speciaal script:

# archlinux-java set java-10-openjdk 

en je krijgt:

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

je kunt ook de “fix” en “status” opties gebruiken:

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

Reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *