为特定程序使用特定版本的 JRE/JDK

NT3*_*3RP 9 arch-linux java

我使用 ArchLinux 和一个名为 PyCharm 的 IDE。在其下载页面 上,它建议使用 Java 6 而不是 OpenJDK。ArchLinux 有一个 OpenJDK 包 ( jdk7-openjdk),我已经安装、安装,并且根据我在Arch Wiki on Java 中阅读的内容,应该可以通过名为jdk6-compatand的包安装 Oracle Java 6 和 OpenJDK 7 jre6-compat,安装这些版本Java 中/opt/而不是正常位置。

但是,在安装jdk6-compatand 之后jre6-compat,当我运行以下命令时,我仍然看到我正在运行 OpenJDK 7:

% 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)
Run Code Online (Sandbox Code Playgroud)

...即使在我设置JAVA_HOME并添加/opt/java6/bin到我PATH.zshrc文件中之后。

如何让 PyC​​harm(或其他应用程序)使用 Oracle Java 6 而不是 OpenJDK?

谢谢,如果我在错误的地方张贴道歉。

其他可能有用的信息:

  • 使用 Gnome 3 作为 DE

小智 7

ArchLinux 将不同的 JDK 保存在 /usr/lib/jvm 目录中,更改默认 JDK 就是修改那里的符号链接:

# 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
Run Code Online (Sandbox Code Playgroud)

Arch 有一个特殊的脚本:

# archlinux-java set java-10-openjdk
Run Code Online (Sandbox Code Playgroud)

你会得到:

# 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)
Run Code Online (Sandbox Code Playgroud)

您还可以使用“修复”和“状态”选项:

# archlinux-java fix
# archlinux-java status
Available Java environments:
  java-10-openjdk (default)
  java-8-openjdk
  java-9-openjdk
Run Code Online (Sandbox Code Playgroud)


Bil*_*hor 5

如果我想使用不同版本的 Java,我会做两件事:

  • 首先,JAVA_HOME根据该 Java 安装进行设置并导出它。
  • 然后,使用 `PATH=${JAVA_HOME}/bin:${PATH} 更新我的路径。

由于PATH搜索的方式,如果添加到路径的末尾,将不会使用新版本。添加到路径末尾的任何内容只会添加新命令,不会替换现有命令。前置PATH变量将优先使用新目录中的命令而不是其他命令。

java在您进入程序之前,诸如此类的命令通常涉及许多符号链接。使用${JAVA_HOME}/bin绕过任何间接,并提供到各种 Java 相关命令的直接路径。

编辑:如果您只想使用不同版本的 Java 运行某些程序,您可以使用这样的包装器:

#!/bin/bash
# javawrapper - replace Java for a command.
export JAVA_HOME=$1; shift
PATH=${JAVA_HOME}/bin:$PATH
$*
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用类似的命令调用包装器。

javawrapper /opt/java6 PyCharm
Run Code Online (Sandbox Code Playgroud)

您还可以~/.bashrc像这样为文件添加别名

alias PyCharm='javawrapper /opt/java6 PyCharm'
Run Code Online (Sandbox Code Playgroud)