蚂蚁说未设置JAVA_HOME,但$ JAVA_HOME显示在Bash中

时间:2019-05-25 00:37:29

标签: java linux ant java-home solus

我正在尝试在Solus Linux笔记本电脑上安装Java和Netbeans。根据NB的说明,我目前正在尝试构建Ant。但是,当我运行build.sh时,Ant会引发错误。我已经从OpenJDK下载了最新的JDK,并将其放在我的/ opt文件夹中。我还克隆了Ant的源代码的Git存储库(按照他们的说明https://ant.apache.org/git.html)。在安装Java的过程中,我已经适当设置了环境变量。

我曾尝试在我的环境变量脚本中使用格式(在各个地方都使用引号,对变量使用更严格的括号等),但无济于事。

尝试运行build.sh时出现错误代码:

ryan@ryan-laptop /opt/ant $ sudo sh build.sh -Ddist.dir=/opt/ant/ dist
Warning: JAVA_HOME environment variable not set.
  If build fails because sun.* classes could not be found
  you will need to set the JAVA_HOME environment variable
  to the installation directory of java.
Error: JAVA_HOME is not defined correctly.
  We cannot execute java
Bootstrap FAILED

我的/usr/share/defaults/etc/profile.d/env.sh:

export JAVA_HOME=/opt/jdk-12.0.1
export ANT_HOME=/opt/ant

export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin

来自bash:

ryan@ryan-laptop $ echo $JAVA_HOME
/opt/jdk-12.0.1

1 个答案:

答案 0 :(得分:0)

问题是> sudo使用的环境与我的用户环境不同。

解决问题的代码:

sudo env="JAVA_HOME=/opt/jdk-12.0.1" ./build

教学上: 根据@markspace的建议,我在build.sh的开头添加了一行,在启动时吐出$ JAVA_HOME变量。我观察到,在运行./build.sh时,由于权限错误,它在失败之前吐出了正确的变量。但是,当我使用sudo运行它时,它会空出一行,表明sudo正在使用一组不同的环境变量。这可能是由于Solus上的默认设置。