对某些程序使用特定版本的 JRE / JDK

对某些程序使用特定版本的 JRE / JDK

我使用 ArchLinux 和一个名为 PyCharm 的 IDE。在它的下载页面,建议使用 Java 6 而不是 OpenJDK。 ArchLinux 有一个 OpenJDK 包 ( jdk7-openjdk),我已经安装了,安装了,并且从我在Java 版 Arch Wiki,应该可以通过名为jdk6-compat和的包将 Oracle Java 6 与 OpenJDK 7 一起安装jre6-compat,这些包将这些版本的 Java 安装在/opt/而不是正常位置。

但是,安装jdk6-compat和后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)

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

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

谢谢,如果我发错地方了,请原谅。

其他可能有帮助的信息:

  • 使用 Gnome 3 作为 DE

答案1

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

Arch 为此有一个特殊的脚本:

# archlinux-java set java-10-openjdk

你得到:

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

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

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

答案2

如果我想使用不同版本的 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
$*

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

javawrapper /opt/java6 PyCharm

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

alias PyCharm='javawrapper /opt/java6 PyCharm'

相关内容