JAVA_HOME 在 Ubuntu 上没有正确定义?

Posted

技术标签:

【中文标题】JAVA_HOME 在 Ubuntu 上没有正确定义?【英文标题】:JAVA_HOME is not defined correctly on Ubuntu? 【发布时间】:2016-04-30 05:31:53 【问题描述】:

我正在尝试在 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 文件夹,结果相同。有什么想法吗?

【问题讨论】:

先安装必要的包apt-get install openjdk-7-jre-headlessapt-get install tomcat7看看。 我都已经安装好了 【参考方案1】:

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

【讨论】:

已经试过了,结果一样。请注意,我可以正确运行命令“java”。当我尝试在 Shibboleth 上运行 bin/install.sh 时显示错误。【参考方案2】:

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

更多信息,请参考Documentation

希望对你有帮助。

【讨论】:

我试过这个但同样的错误。有趣的是,如果我输入“java”命令,它就可以工作。但是,当我尝试运行 Shibboleth 的“bash bin/install.sh”时,出现 JAVA_HOME 错误。 更新了我的答案,希望对您有所帮助 还是同样的错误。所有这些变量的定义都没有引号可以吗?我什至没有 .bash_profile 或 /etc/profile.d/java.sh 文件 Ubuntu 使用 ~/.profile 而不是 ~/.bash_profile,更新了我的答案 /etc/profile.d/java.sh 你需要创建一个,使用 cat。【参考方案3】:

根据您的编辑。

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】:

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

使用 nano 编辑文件

    sudo nano idp-install.sh

或 vim 编辑器

    vim idp-install.sh

并更改对应于 java 路径的行并添加正确的 java 路径。这将解决您的问题。

附:此解决方案特定于 Shibboleth 安装的 java 路径。

【讨论】:

【参考方案5】:

代替

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

我做到了

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

工作。

【讨论】:

【参考方案6】:

从 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"

【讨论】:

【参考方案7】:

对于以后的人,请注意这个问题通常是因为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"

【讨论】:

以上是关于JAVA_HOME 在 Ubuntu 上没有正确定义?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下已经配置了jdk了,可是启动tomcat时还是提示没有jdk环境

在 Ubuntu 中轻松更改 $JAVA_HOME [关闭]

在Ubuntu中轻松更改$ JAVA_HOME [关闭]

我需要在linux上配置JAVA_HOME,可是不知道jdk装在哪里了?

[转]Linux中root用户找不到JAVA_HOME

Ubuntu 上有没有 uml 工具? [关闭]