在Fedora 25中设置PATH和JAVA_HOME

时间:2017-02-01 16:22:25

标签: java maven fedora-25

请原谅之前回答的问题,但如果我看了10篇不同的帖子,我会找到20个不同的回复。

我刚刚安装了Fedora 25.我将学习Java开发并需要设置我的环境。我将使用openjdk并安装了java-1.8.0-openjdk-devel。我也将使用Maven。

现在我需要设置$PATH$JAVA_HOME变量。

我尝试了这里找到的答案(Fedora OpenJDK Set JAVA_HOME

但是在添加到我的.bashrc

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

然后进行测试,我觉得在我看来是错误的答案,因为我觉得最后不应该有/ jre /

> echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b14.fc25.x86_64/jre/

那么请问我应该将JAVA_HOME设置为什么,以便我不需要每次更新openjdk都更新它?

之后我认为PATH只是

export PATH=$JAVA_HOME/bin:$PATH

这似乎是一件很简单的事情,但在我看来有很多困惑。 THX

PS 还有.bashrc甚至是正确的地方吗?因为我在这里看到(https://askubuntu.com/questions/175514/how-to-set-java-home-for-java)/ etc / environment会更合适)thx

7 个答案:

答案 0 :(得分:1)

与Fedora捆绑在一起的OpenJDK对我有用。例如,IntelliJ无法使用此版本。在我看来,最好的选择是从Oracle安装Oracle JDK RPM。

JDK位置:

/usr/java/latest/

要操纵下面的JRE使用命令:

sudo alternatives --config java

答案 1 :(得分:1)

我建议创建一个别名命令,修改bashrc并设置JAVA_HOME  进入bash_profile,这个:

  1. 在bashrc中创建命令:

    alias set-java='sudo alternatives --config java;export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::");source  ~/.bash_profile'
    
  2. 保存并执行:source ~/.bashrc

    1. 在bash_profile中创建通用JAVA_HOME

      export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
      PATH=$JAVA_HOME/bin:$PATH
      
    2. 执行别名命令

答案 2 :(得分:1)

到目前为止,这使Android Studio可以使用Fedora提供的OpenJDK来运行,并尊重分发提供的资料,而不会产生许多其他未经管理的符号链接:

vim ~/.bash_profile

添加以下内容,或替换任何与之相似的现有示例:

 export JAVA_HOME=$(readlink -f /usr/bin/java | cut -d/ -f1-6)

该命令基本上要求符号链接/ usr / bin / java指向的物理路径(由Fedora中的替代配置),然后说“通过拆分/字符来获取给您的前6个字段”。

请注意,您的$ PATH已经正确设置,可以与Fedora提供的OpenJDK一起使用。

实际上,这最终看起来像:

 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-8.fc28.x86_64/jre

这假定您至少有Fedora附带的OpenJDK软件包之一。 25可能只出货1.8,28则出货1.8、10.0.2和11.0.1。 (如果您正在阅读本文,但仍使用25,则可能是升级的时候了。)

安装一个可供您使用的java-*-openjdk-headless软件包(或Oracle提供的软件包之一),并使用以下命令配置要使用的软件包:

 sudo alternatives --config java

我的Fedora 28安装默认使用OpenJDK 1.8。

答案 3 :(得分:0)

也许添加tr可行吗? export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::" | tr -d "/jre/")

此外,在env var中设置它将使var独立于你使用的sh。这是存储它的好方法。

答案 4 :(得分:0)

我把以下内容放在〜/ .profile中,而不是〜/ .bashrc中,我认为它在Fedora上是一样的(我在工作中使用CentOS并做同样的事情):

export JDK_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME=$JDK_HOME/jre

我必须在更改.profile之后退出或重新启动。

在Ubuntu上,几年前java只从7变为8。我不知道Fedora为什么要在java文件夹中输入确切的版本号。你可能会抱怨?

如果Java在Fedora上为你移动太多,请使用符号链接。符号链接立即生效,无需注销或重新启动。在我的笔记本电脑上,我加密了我的主文件夹,因此为了提高速度,我将大多数第三方工具放在/ tools /文件夹中并让自己的帐户访问它(sudo chown -R myself.myself /tools/其中myself是我的用户ID )。这就是我放置maven安装的地方。 Tomcat为每个版本使用不同的目录名,因此我创建了一个符号链接:

cd /tools
ln -s apache-tomcat-8.0.38 latest-tomcat

然后在〜/ .profile中(CATALINA在本例中表示TOMCAT - 不要问我原因):

# My un-encrypted Tools folder
export TOOLS=/tools
# Tomcat
export CATALINA_HOME=$TOOLS/latest-tomcat
# Maven
export M2_HOME=$TOOLS/apache-maven-3.3.9/
export M2="$M2_HOME"bin
export PATH=$PATH:$M2

当我升级tomcat时:

cd /tools
rm -f latest-tomcat
ln -s apache-tomcat-8.0.39 latest-tomcat

您可以使用相同的技术制作/usr/lib/jvm/latest-java。实际上,如果你安装了Oracle Java(不一定推荐),那就完全就是这样了。

是的,你对路径的看法对我来说是正确的。我没有把java放在我的路径中,更喜欢使用$JDK_HOME$JAVA_HOME,或者只是调用maven。部分原因是为了安全。部分原因是我总是知道我正在使用哪个版本的Java。

P.S。对我来说,ln -s语法总是看起来好像参数是相反的。首先是实际的文件夹名称,然后是您想要的别名/链接。

答案 5 :(得分:0)

可悲的是我没有Fedora可供我使用,所以我无法调查Java通常是如何安装的,但为什么你不尝试用你的表达式替换/ usr / bin / java / us / /斌/ javac的?您可以使用

获取javac链接的实际路径
which javac

用readlink阅读真实路径。显然,如果安装了JDK(而不是JRE),它就可以工作。 关于更新,大多数Linux发行版创建一个符号链接,如/ usr / lib / jvm,它设置为正确的目录,并在新版本的情况下更新。对我来说,更好地解决它将这条路径放在你的bashrc中。

是的,如果你不需要其他操作系统用户可以看到JAVA_HOME,那么bashrc通常就足够了。

答案 6 :(得分:0)

设置JAVA_HOME:

variant