2011-06-25 90 views

回答

169

我放线:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

在我~/.bashrc文件。

/usr/lib/jvm/java7-oracle应该是指向/usr/lib/jvm/java-7-oracle-[version number here]的符号链接。

它是一个符号链接的原因是,如果有新版本的JVM,您不需要更新您的.bashrc文件,它应该自动指向新版本。

如果要在全局范围内设置JAVA_HOME环境变量,并且在系统级意味着使用应在/etc/environment文件中设置。 For More

+1

谢谢,明白了:D –

+4

或者/usr/lib/jvm/java-1.6.0-openjdk-如果您使用OpenJDK而不是Oracle(Sun)JDK,则使用amd64。 –

+6

你可以使用 export JAVA_HOME =/usr/lib/jvm/default-java/ – noomz

19

如果你想提供给所有用户,并在系统启动这个环境变量,那么你可以添加以下/etc/profile.d/java.sh(如果需要创建它):

export JDK_HOME=/usr/lib/jvm/java-7-oracle 
export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

然后在终端运行:

sudo chmod +x /etc/profile.d/java.sh 
source /etc/profile.d/java.sh 

我的第二个问题是 - 应该把它指向的java -6-太阳还是java-6-sun-1.6.0.24?

应该始终指向java-7-oracle作为符号链接到最新安装的一个(假设你从Ubuntu软件库从可在oracle.com下载安装了Java和现在)。

162

如果您想在全局和系统级别更改它,

/etc/environment 

添加这一行:

JAVA_HOME=/usr/lib/jvm/java-7-oracle 
+27

+1这是推荐的方式https: //help.ubuntu.com/community/EnvironmentVariables –

+0

@metdos上述答案不是全局或系统级? –

+1

@AndroidKiller你检查了丹尼尔库尔曼指出的链接吗? – metdos

12
的java

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

或Java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

9

如果您正在进行任何类型的开发,您需要指向JDK(Java开发工具包)。否则,您可以指向JRE(Java运行时环境)。

JDK包含JRE所具有的所有内容。如果您只是执行Java程序,则可以指向JRE或JDK。

您应该根据您当前使用的Java设置JAVA_HOMEreadlink将打印一个符号链接的价值为当前的Java和sed将其调整到JRE目录:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") 

如果你想设置JAVA_HOME为JDK,你应该转到上一级文件夹的详细:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::") 
46

将Oracle的Java SE开发工具包设置为系统默认的Java只需从here下载最新的Java SE开发工具包,然后在您的文件系统中创建一个您喜欢的目录,例如/usr/java现在提取刚下载到该目录中的文件:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java 

现在设置你的JAVA_HOME环境变量:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/ 
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000 
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000 

确保Oracle的Java被设置为默认的java:

$ update-alternatives --config java 

你得到的东西是这样的:

There are 2 choices for the alternative java (providing /usr/bin/java). 

    Selection Path           Priority Status 
------------------------------------------------------------ 
* 0   /opt/java/jdk1.8.0_05/bin/java     20000  auto mode 
    1   /opt/java/jdk1.8.0_05/bin/java     20000  manual mode 
    2   /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061  manual mode 

Press enter to keep the current choice[*], or type selection number: 

注意左边数字前面的星号,如果没有设置正确的数字,请输入数字并按回车键选择正确的数字。 现在测试你的java:

$ java -version 

,如果你喜欢的东西下面,你是好去:

java version "1.8.0_05" 
Java(TM) SE Runtime Environment (build 1.8.0_05-b13) 
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode) 

也注意到,你可能需要root权限,或者是在sudoers中组能去做这个。我已经在Ubuntu 12.04和Debian上测试过这个解决方案,并且它在两者都有效。

+1

这是正确的答案。谢谢! – Aerozeek

+1

是的,这个解决方案比接受的方法更清洁。 –

+0

完美!谢谢 –

3

参见this;运行

sudo update-java-alternatives --list 

名称和目录列出了所有机器上的Java安装,然后运行

sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle] 

选择JRE/JDK要使用的。

如果您想为每个Java任务使用不同的JDK/JRE,则可以运行update-alternatives以一次配置一个java可执行文件;您可以运行

sudo update-alternatives --config java[Tab] 

查看可以配置的Java命令(java,javac,javah,javaws等)。然后

sudo update-alternatives --config [javac|java|javadoc|etc.] 

会将该Java任务/命令关联到特定的JDK/JRE。

您可能还需要设置JAVA_HOME对于某些应用:从this answer可以使用

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") 

为的JRE,或

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::") 

的JDK中。

+0

另一种方法:'java -XshowSettings 2>&1 | grep -e'java.home'| awk'{print'JAVA_HOME =“$ 3}'| sed“s/\/jre // g”>>/etc/environment' – Xdg

相关问题