在Ubuntu上,JAVA_HOME定义不正确?

22

我正在尝试在Ubuntu 14.04上安装一些软件(Shibboleth)。我已经安装了Java 7 OpenJDK,并将其安装在/usr/lib/jvm/目录下,在/usr/environment中有以下这些内容:

JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
export JAVA_HOME
如果我输入echo $JAVA_HOME,我可以正确地获得/usr/lib/jvm/java-7-openjdk-amd64。 然而,当我尝试安装Shibboleth时,我总是会收到Error: JAVA_HOME is not defined correctly. Cannot execute java的错误提示。
有趣的是,如果我键入java命令,它可以正常工作(它指向正确的/usr/lib/java)。但是,当我尝试运行Shibboleth的bash bin/install.sh时,我会遇到JAVA_HOME错误的问题。
我已经尝试将JAVA_HOME设置为相同结果的文件夹。有什么想法吗?

首先安装必要的软件包 apt-get install openjdk-7-jre-headlessapt-get install tomcat7,然后查看结果。 - Madura Harshana
我已经安装了它们两个。 - user411103
8个回答

36

JAVA_HOMEPATH两者都加入到你的~/.profile文件中。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

并将以下内容添加到您的/etc/profile.d/java.sh文件中:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JAVA_HOME
PATH=${JAVA_HOME}/bin:${PATH}
export PATH
JRE_HOME=/usr/lib/jvm/jre
export JRE_HOME
JAVA_OPTS="-XX:+AggressiveOpts -Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
export JAVA_OPTS

欲了解更多信息,请参考文档

希望对您有所帮助。


1
我尝试了这个,但是出现了同样的错误。有趣的是,如果我输入“java”命令,它可以工作。然而,当我尝试运行Shibboleth的“bash bin/install.sh”时,我会遇到JAVA_HOME错误。 - user411103
1
更新了我的回答,希望现在能有所帮助。 - Let'sRefactor
仍然是相同的错误。所有这些变量都没有用引号定义,这样可以吗?我甚至没有 .bash_profile 或 /etc/profile.d/java.sh 文件。 - user411103
Ubuntu使用~/.profile而不是~/.bash_profile,我更新了我的答案。 - Let'sRefactor
你需要创建一个 /etc/profile.d/java.sh 文件,可以使用 cat 命令。 - Let'sRefactor
对于一些应用程序,例如PDFsam:~/.bashrc需要使用jdk版本11。 - ThomasAFink

6

在Ubuntu终端中执行以下命令:

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

测试Maven运行:

mvn --version

它将会输出:

Maven home: /usr/share/maven
Java version: 1.7.x.xxx, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-47-generic", arch: "amd64", family: "unix"

5

与其

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

我完成了

EXPORT JAVA_HOME='/usr/lib/jvm/java-1.7.0-openjdk-amd64'

工作正常。


4
根据您的编辑。
sudo vim /etc/profile

请在文件末尾添加以下两行内容:

export JAVA_HOME="/usr/lib/jvm/java-8-oracle"  
export PATH=JAVA_HOME/bin:$PATH

然后
source /etc/profile

检查

mvn -version

0
问题在于您正在运行的install.sh脚本中,Java路径设置错误。
请使用nano编辑该文件。
    sudo nano idp-install.sh

或者Vim编辑器

    vim idp-install.sh

更改对应 Java 路径的那一行并添加正确的 Java 路径,这将解决您的问题。

P.S. 此解决方案仅适用于 Shibboleth 安装的 Java 路径。


0

你应该设置Java和Javac文件所在的bin文件夹路径。 在你的情况下,它可能是/usr/lib/jvm/java-7-openjdk-amd64/bin。


已经尝试过了,结果相同。请注意,我可以正常运行“java”命令。当我尝试在Shibboleth上运行bin/install.sh时,会显示错误。 - user411103

0

导出JAVA_HOME='/usr/lib/jvm/java-11-openjdk-amd64'


0

对于未来的读者,请注意,此问题通常发生在您的环境中未正确设置 Java 的情况下。按照以下步骤解决此问题

首先,使用以下命令检查您的 JDK 位置 cd /usr/lib/jvm/{jdk-version} 现在,您已经拥有了 JDK 的完整路径,像这样复制整个路径,在我的例子中,我有 jdk1.8.0_261

因此,您要复制 /usr/lib/jvm/jdk1.8.0_261 路径,打开 /etc/environment 并将 JDK 路径正确设置如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:usr/lib/jvm/jdk1.8.0_261:/opt/apache-maven-3.6>
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_261
M2_HOME="/opt/apache-maven-3.6.3"

请注意,我已将/usr/lib/jvm/jdk1.8.0_261添加到PATH变量和JAVA_HOME变量中,
这应该解决错误Error: JAVA_HOME is not defined correctly. Cannot execute java,因为JDK现在已正确设置在PATHJAVA_HOME中,然后对于Shibboleth,您也可以定义它安装的路径,如下所示(这是一个例子-不知道如何设置Shibboleth)
SHIBBOLETH_HOME="/opt/shibboleth-{version}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接