请原谅之前回答的问题,但如果我看了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
答案 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,这个:
在bashrc中创建命令:
alias set-java='sudo alternatives --config java;export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::");source ~/.bash_profile'
保存并执行:source ~/.bashrc
在bash_profile中创建通用JAVA_HOME
:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
PATH=$JAVA_HOME/bin:$PATH
执行别名命令
答案 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