Ubuntu:未正确定义JAVA_HOME

时间:2016-01-23 17:40:12

标签: java ubuntu openjdk java-home

我正在尝试在Ubuntu 14.04中安装一些软件(Shibboleth)。我已经在/usr/lib/jvm/安装了Java 7 OpenJDK,我在/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设置为jre文件夹,结果相同。有什么想法吗?

7 个答案:

答案 0 :(得分:20)

同时添加JAVA_HOME和& PATH

~/.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

有关详细信息,请参阅Documentation

希望它有所帮助。

答案 1 :(得分:1)

代替

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

我做到了

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

工作。

答案 2 :(得分:0)

您应该设置bin文件夹的路径,其中找到java,javac文件。 在你的情况下,它可能是/ usr / lib / jvm / java-7-openjdk-amd64 / bin

答案 3 :(得分:0)

根据您的编辑器。

sudo vim /etc/profile

在文件末尾添加这两行

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

然后

source /etc/profile

检查

mvn -version

答案 4 :(得分:0)

我的问题是您正在运行的install.sh脚本的Java路径错误。

使用nano编辑文件

    sudo nano idp-install.sh

或vim编辑器

    vim idp-install.sh

并更改与Java路径相对应的行,并添加正确的Java路径。这样可以解决您的问题。

P.S。此解决方案特定于Shibboleth安装的java路径。

答案 5 :(得分:0)

从Ubantu终端执行:

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"

答案 6 :(得分: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,因为JDKPATH中的JAVA_HOME现在已正确设置,那么对于Shibboleth,您现在也可以定义这样安装的路径(这是一个示例,不知道如何设置Shibboleth)

SHIBBOLETH_HOME="/opt/shibboleth-{version}"