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