java未正常安装_Java-错误:未正确定义JAVA_HOME来执行Maven

Java-错误:未正确定义JAVA_HOME来执行Maven

我安装了Java并设置了环境路径,当我执行2677771368117535744时,得到以下输出:

/usr/lib/jvm/java-7-oracle/jre/bin/java

我还安装了2677771368117535744,并更改了2677771368117535745文件,现在看起来像这样:

JAVA_HOME="/usr/lib/jvm/java-7-oracle/jre/bin/java"

M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5

M2=$M2_HOME/bin

MAVEN_OPTS="-Xms256m -Xmx512m"

PATH=$M2:$PATH

但是当我执行2677771368117535744时,我得到一个警告:

Error: JAVA_HOME is not defined correctly.

We cannot execute /usr/lib/jvm/java-7-oracle/jre/bin/java/bin/java

无法找出为什么它会重复到底/bin/java/bin/java

13个解决方案

78 votes

假设您使用bash shell并通过Oracle安装程序安装了Java,则可以将以下内容添加到JAVA_HOME=/opt/java/openjdk

export JAVA_HOME=$(/usr/libexec/java_home)

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

这将选择正确的Oracle安装程序定义的2677771950773470208,并将首先在您的$()中进行设置,以确保找到它。

另外,您在以后更新Java时无需更改它。

编辑

根据评论:

重新启动后使其持久

只需在shell配置文件中添加这些行即可。 (假设是2677771950773470208)

例如:2677771950773470208,$()或.profile(对于ubuntu)

使用自定义Java安装

将2677771950773470208设置为不包含2677771950773470209的自定义Java安装路径的根文件夹。

例如:2677771950773470208

rbento answered 2019-12-26T13:23:01Z

19 votes

JAVA_HOME应该是/usr/lib/jvm/java-7-oracle/jre/。

talex answered 2019-12-26T13:23:20Z

13 votes

我们打开一个终端,寻找java的位置:

manuel@zonademanel:~ → whereis java

Java:/ usr / bin / java / etc / java / usr / bin / X11 / java / usr / share / java   /usr/share/man/man1/java.1.gz

我们正在寻找的是/ usr / bin / java在命令行上继续以找到绝对路径,因为这只是一个符号链接。

manuel@zonademanel:~ → ls -lah /usr/bin/java

lrwxrwxrwx 1根根2015年5月22日/ usr / bin / java->   / etc / alternatives / java

manuel@zonademanel:~ → ls -lah /etc/alternatives/java

lrwxrwxrwx 1根根39 dic 7 11:52 / etc / alternatives / java->   / usr / lib / jvm / java-8-oracle / jre / bin / java

我用以下值修改了/ etc / environment文件

PATH =“ / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games:/ usr / local / games:/ usr / lib / jvm / java-8-oracle / jre / bin“   JAVA_HOME =“ / usr / lib / jvm / java-8-oracle / jre”

如果我不想重新登录,可以使用以下命令重新加载更改:

source /etc/environment

正确运行mvn -version

manuel@zonademanel:~ → mvn -version

Apache Maven 3.0.5

Maven主页:/ usr / share / maven

Java版本:1.8.0_77,供应商:Oracle Corporation

Java主页:/ usr / lib / jvm / java-8-oracle / jre

默认语言环境:es_MX,平台编码:UTF-8

操作系统名称:“ linux”,版本:“ 3.16.0-70-generic”,拱门:“ amd64”,家族:“ unix”

Juan Manuel Garcia Carmona answered 2019-12-26T13:24:42Z

9 votes

$JAVA_HOME应该是java的安装目录,而不是其一部分:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Mureinik answered 2019-12-26T13:25:03Z

5 votes

由于多种原因,您可能会收到此错误。 要快速解决此问题,请按照以下步骤操作,

首先找到java的位置。 要获取已安装的Java平台的列表,请在终端上运行以下命令:

$ sudo update-alternatives --config java

现在设置JAVA_HOME和PATH,

$ export JAVA_HOME=

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

创建符号链接

$ sudo ln -s /jre

以您的情况为例:

$ sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/java-7-oracle/jre/bin/java

上面的命令将创建系统试图在您的问题中找到的符号链接位置。

最后做

$ mvn --version

tk_ answered 2019-12-26T13:25:49Z

2 votes

在我的情况下,必须使用安装了Java的整个目录:

export JAVA_HOME=/usr/java/jdk1.8.0_31

trenixjetix answered 2019-12-26T13:26:09Z

2 votes

设置为export JAVA_HOME = / usr / java / jdk1.8.0_31。并使用sudo运行将执行。

rohit sawant answered 2019-12-26T13:26:29Z

2 votes

首先,在开发模式下,应该使用JDK而不是JRE。其次,JAVA_HOME是您安装Java的地方,其他所有框架都将在其中搜索所需的内容(JRE,javac等)。

所以如果你设置

JAVA_HOME = / usr / lib / jvm / java-7-oracle / jre / bin / java

当您运行“ mvn”命令时,Maven会尝试通过添加/ bin / java来访问Java,并认为JAVA_HOME在Java安装的根目录中。

但是设置

JAVA_HOME = / usr / lib / jvm / java-7-oracle /

Maven将访问add bin / java,然后它将正常工作。

Jad B. answered 2019-12-26T13:27:17Z

2 votes

这个解决方案对我有用...只需输入在终端Java home然后运行/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre它会显示相同的错误,但带有这样的日志

which: no javac in (/jre/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/puppetlabs/bin)

Warning: JAVA_HOME environment variable is not set.

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T22:59:23+05:30)

Maven home: /opt/apache-maven-3.2.5

Java version: 1.8.0_171, vendor: Oracle Corporation

Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"

现在复制Java home路径,即我的情况下为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre。

现在输入

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre

错误得到解决。注意:粘贴您自己的路径,该路径将由机器显示在导出JAVA_HOME的mvn日志中。

Mohit Garg answered 2019-12-26T13:27:51Z

1 votes

发生这种情况是由于以下原因:

如果看到mvn脚本:代码在这里失败-

调试和修复步骤:

步骤1:打开mvn脚本/Users/Username/apache-maven-3.0.5/bin/mvn(使用less命令打开,例如:less /Users/Username/apache-maven-3.0.5/bin/mvn)

步骤2:在脚本中查找以下代码:

if [ -z "$JAVACMD" ] ; then

if [ -n "$JAVA_HOME" ] ; then

if [ -x "$JAVA_HOME/jre/sh/java" ] ; then

# IBM's JDK on AIX uses strange locations for the executables

JAVACMD="$JAVA_HOME/jre/sh/java"

else

JAVACMD="$JAVA_HOME/bin/java"

fi

else

JAVACMD="`which java`"

fi

fi

if [ ! -x "$JAVACMD" ] ; then

echo "Error: JAVA_HOME is not defined correctly."

echo " We cannot execute $JAVACMD"

exit 1

fi

步骤3:发生这种情况是因为未设置JAVACMD变量。 因此它显示错误。

注意:修复

export JAVACMD=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

关键:如果要永久保留打开emacs .profile

发布命令然后按Ctrl-x Ctrl-c(save-buffers-kill-terminal)。

Shubham Verma answered 2019-12-26T13:28:46Z

1 votes

如果您使用的是mac-OS,则需要将/usr/libexec/java_home更改为export JAVA_HOME=$(/usr/libexec/java_home)。步骤如下:

$ vim .bash_profile

export JAVA_HOME=$(/usr/libexec/java_home)

$ source .bash_profile

/usr/libexec/java_home是您的jvm的路径

ishanbakshi answered 2019-12-26T13:29:11Z

1 votes

使用以下两个命令(对于Java 8):

sudo update-java-alternatives --set java-8-oracle

java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment

Xdg answered 2019-12-26T13:29:31Z

0 votes

就我而言,问题出在vscode中。

我使用Windows并在计算机上安装了Ubuntu,因此vscode终端使用Ubuntu。 我只是转到settings.json并再次更改为cmd.exe

Pedrojonassm answered 2019-12-26T13:29:55Z


版权声明:本文为weixin_39860166原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。