同一台Linux机器上的多个Java环境


9

在同一台Linux机器上安装多个并发 Java JDK版本的最有效方法是什么?

我需要Java5,而我当前的Ubuntu 9.10 Karmic装有Java6。

我知道我可以为此设置VM,但是我正在寻找替代方案。

Answers:


5

如果从Sun 下载linux二进制文件,则可以将其安装在所需的任何目录中。然后只需在代码中引用这些库,就可以了。

使用二进制安装程序,它将创建自己的命名子目录(例如,在您的示例中为/usr/java/jdk1.5.0_),因此您可以下载任意数量的文件,并且它们将自己以适当的名称排列子目录。

主要的Java二进制文件位于/ usr / bin中,因此,如果要将其替换为当您键入“ java”时它将访问您的Java而不是那个Java二进制文件,只需将旧的二进制文件移出/ usr / bin ,然后将新链接链接到那里。键入which java将告诉您系统上的默认Java是什么。

@jldupont:当我想到并发安装时,我想到了同一台计算机上安装的多个版本,我的方法绝对可以为您提供这些版本。我在生产包装盒上安装了大约12个Java版本,以处理尚未更新的公司的反对。

但是,当您键入“ java”时,您只会得到一个Java版本,因为那是“ / usr / bin”中的内容……您必须输入类似“ /usr/java/jdk1.5.1/ bin / java”以获取不是系统默认值的特定Java二进制文件。


谢谢,但我需要并发安装。我怎么做?
jldupont 2010年

谢谢。现在,我已经在/ opt中安装了JDK5,并为自己编写了一个bash脚本来设置环境变量...看起来可行。我认为这会比这更痛苦!
jldupont 2010年

@jldupont:实际上,这是我喜欢linux的一件事...由于没有注册表阻碍,因此您可以安装同一件事一百次,只要您确保安装就没有问题。不覆盖普通文件。我认识很多运行(例如)多个不同版本的Apache的人。我本人倾向于运行Perl和Java的多个版本。
Satanicpuppy

1

只需从oracle下载并执行.bin文件,然后将其自身提取到文件夹中即可。将该文件夹(例如jdk1.6.0_32)移动到/ usr / lib / jvm中,然后将其setjava用于更改Java版本的脚本。但是,由于这些export语句,您需要留在同一终端中。另外,可能没有设置一些小型的jvm工具,但我想它在大多数情况下应该可以使用。我也是一个shell新手,所以如果有更好的可能性,请纠正我:-)我的代码是:

#!/bin/bash
# shouldnt be used in a loop, else the path may become too long

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Not running as root"
    exit
fi

case "$1" in
  6)
    echo "Setting Java version 6"
    export PATH=/usr/lib/jvm/jdk1.6.0_32/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javaws /usr/bin/javaws
    javac -version    
    java -version
    ;;
  7)
    echo "Setting Java version 7"
    export PATH=/usr/lib/jvm/java-7-openjdk/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javaws /usr/bin/javaws
    javac -version
    java -version
    ;;
  *)
    echo "Usage: $0 {6|7}"

esac
exit 0

Hoffner不确定导出语句如何工作。我尝试时它们不起作用。
SureshS 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.