我已经安装了Java版本。如何正确设置$JAVA_HOME环境变量?

#1 楼

您可以按照Petronilla Escarabajo的建议在JAVA_HOME中设置/etc/profile。但是JAVA_HOME或任何系统变量的首选位置是/etc/environment

在任何文本编辑器(如/etc/environmentnano)中打开gedit并添加以下行:

JAVA_HOME="/usr/lib/jvm/open-jdk"


(java路径可能不同)

通过运行以下命令,使用source加载变量:

source /etc/environment


然后检查通常,大多数Linux系统默认使用/ etc / environment来运行以下命令来更改该变量:

echo $JAVA_HOME


Update

如果您的系统不这样做,请在~/.bashrc中添加以下行(感谢@pje)

source /etc/environment


评论


当我尝试运行Android Studio(以IntelliJ IDEA为基础)时,出现了一条非常类似于@advocate的错误消息:“'tools.jar'似乎不在Android Studio类路径中。”在对JAVA_HOME进行了很多摆弄而没有成功之后,我决定看看studio.sh,这是启动Android Studio的shellscript。作为一个疯狂的猜测,我将JDK_HOME设置为JAVA_HOME期望的相同值,瞧!它安装没有大问题。

–希尔顿费尔南德斯
2015年3月7日在23:20



对于从事软件开发的人员,请勿将JAVA_HOME放在/ etc / environment中,除非您希望在每次切换JDK版本时都重新启动。

– HDave
16-09-20在19:03

正如其他人指出的那样,这是一个临时解决方案。没有人愿意在每次重新启动bash时都运行源代码。

– yuranos
17年2月19日在21:49

正如其他人指出的那样,这不会在终端会话之间发生。为了解决这个问题,我只是将行源/ etc / environment添加到了bash配置文件〜/ .bashrc的顶部,以便在启动时加载我的所有环境设置。到目前为止为我工作。

– pje
17年3月11日在22:31

@sedulam我更新了答案

– Manula Waidyanatha
17年4月20日在6:20

#2 楼

要设置JAVA_HOME环境变量,请执行以下操作:通过按键盘上的Ctrl + Alt + T启动终端,输入以下命令:
$ gksudo gedit /etc/environment

根据Java的安装位置,您需要提供完整的路径。对于此示例,我在/usr/lib/jvm/java-7-oracle目录中安装了Oracle JDK 7,滚动到文件末尾并输入以下内容:JAVA_HOME=/usr/lib/jvm/java-7-oracle export JAVA_HOME

保存文件并退出gedit。
最后重新加载使用以下命令进入系统PATH:
$ . /etc/environment


以上方法将避免您每次登录计算机时都必须运行命令。 br />

评论


如何 。 / etc /环境工作?

– Sudip Bhandari
2016年9月13日下午13:36

在/ etc / environment中是否需要添加export命令?

– pkaramol
16年11月23日在10:01

@pkaramol我必须在16.04LTS上添加export JAVA_HOME以使其在启动时加载。

–adeen-s
17年1月20日在6:20

@ adeen-s您将导出添加到了/ etc / environment中的一行中,它有帮助吗?该文件包含变量定义,解析为=分隔的名称/值对;它的内容不作为命令执行。 (请参阅man pam_env。)因此,除非您分别将文件当作脚本一样对待(例如,将/ etc / environment传递到bash的./source内置文件中),否则我不希望它起作用。

– Eliah Kagan
17年8月17日在16:02

>如何。 / etc /环境工作? -。 (点)从文件askubuntu.com/a/232938/189965加载命令

–罗马别基夫
18-09-22在7:32

#3 楼

如果您不知道路径,而您仅安装了openJDK,则可以键入
update-alternatives --config java,然后应该找到路径。要设置变量,您可以先写JAVA_HOME=<PATH>,然后写export JAVA_HOME。注意,声明变量时没有空格。要检查变量是否已存储,只需键入echo $JAVA_HOME进行验证。

评论


这似乎是静态的。如果我删除openjdk-7并安装openjdk-9,JAVA_HOME会不会指向错误的位置?如何使其动态化?

– DavidJ
16年7月20日在18:49

通过手动更改它。再次,您将成为动态的方式...

– HDave
16-09-20在19:04

@HDave的意思是,在某些情况下,您可能希望JAVA_HOME指向特定的Java版本,因此使JAVA_HOME动态更新可能不是您想要的。

– Maciej
16-10-9在15:31

我喜欢这个答案。我用echo进行了测试,看到了自己的路。但是,我感到困惑,为什么在运行mvn -version时仍未设置JAVA_HOME环境变量

– Winnemucca
17年4月11日在22:19

当我更无知的时候,我写了这个答案。如所述设置变量只会影响您当前的终端会话,并且不会持久化。正确的方法是运行update-alternatives --install <链接> <名称> <优先级>,例如:update-alternatives --install / usr / bin / java java / usr / lib / jvm / default-runtime / bin / java 1

–错误
17年5月14日在12:26