与maven有JAVA_HOME不一致问题

我即将发布一个项目但似乎JAVA_HOME不一致。 也许它被其他地方覆盖了? 我使用的是ubuntu 14.04,我有openjdk-7,java-7-oracle,java-8-oracle。 使用update-java-alternatives设置了默认java

java -version

 java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 

mvn -version给出以下输出

 Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T17:37:52+00:00) Maven home: /usr/share/maven3 Java version: 1.8.0_25, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-oracle/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.13.0-39-generic", arch: "amd64", family: "unix" 

但是在做mvn发布时:准备,下面是我看到的:

 [INFO] Not generating release POMs [INFO] Executing goals 'clean verify'... [WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance. [INFO] Error: JAVA_HOME is not defined correctly. [INFO] We cannot execute /usr/lib/jvm/java-8-oracle/bin/java/bin/java 

看起来像java执行器正在错误的文件夹中查找: /java/bin/java 。 我已经尝试将java home更改为/usr/lib/jvm/java-8-orable/bin但它破坏了mvn-version check。

如何解决这个问题? 谢谢阅读

我找不到这个来解决这个问题。 有没有人遇到类似的东西?

编辑1:

      org.apache.maven.plugins maven-surefire-plugin 2.12   **/*ITest.java     maven-failsafe-plugin 2.6    integration-test verify      org.apache.maven.plugins maven-compiler-plugin 2.0.2  1.7 1.7 ${project.build.sourceEncoding} 128m 512m    org.apache.maven.plugins maven-resources-plugin 2.4.3  ${project.build.sourceEncoding}    org.apache.maven.plugins maven-release-plugin 2.3.2  clean verify https://xxxx/svn/projectname/tags    com.mysema.maven maven-apt-plugin 1.0   org.codehaus.mojo build-helper-maven-plugin 1.9     

我已经切换到java-7-oracle但仍然没有机会:

 [INFO] Executing goals 'clean verify'... [WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance. [INFO] Error: JAVA_HOME is not defined correctly. [INFO] We cannot execute /usr/lib/jvm/java-7-oracle/bin/java/bin/java 

编辑2:

亲爱的选民,我不是在寻求有关如何设置Java Home的帮助。 它被设定为

 /usr/lib/jvm/java-8-oracle 

然后在我尝试使用java 7运行相同的东西时

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

这是由webup8脚本在/etc/profile.d/jdk.sh中设置的

 export J2SDKDIR=/usr/lib/jvm/java-7-oracle export J2REDIR=/usr/lib/jvm/java-7-oracle/jre export PATH=$PATH:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/db/bin:/usr/lib/jvm/java-7-oracle/jre/bin export JAVA_HOME=/usr/lib/jvm/java-7-oracle export DERBY_HOME=/usr/lib/jvm/java-7-oracle/db 

编辑3

我已经切换到openjdk 7,编辑了jdk.sh来反映这个export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64并且出错了。 我跑到其他着名的问题(权限问题到标签文件夹。很奇怪)。 所以我认为这与maven本身无关。 但这很奇怪,它适用于openjdk ……

JAVA_HOME必须指向jre,而不是jdk。 然后设置:

 export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre 

在我的主文件夹上创建文件.mavenrc并添加下面的代码解决了我的问题。 (Ubuntu 14.10,Maven 3.2.1)

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

另一种解决方法:

 export JAVACMD=$JAVA_HOME/bin/java 

设置/ usr / lib / jvm /java⇒/usr/java/jdk1.7.0_45对我不起作用

我花了很多时间来解决类似的错误。 看起来包管理器可能会在Java安装中造成混乱。 Java的路径有时在bash文件中进行硬编码。 我在/etc/profile.d/jdk.sh找到了一个。 它只是覆盖您的设置。 另一个修复/解决方法是更新符号链接,在我的例子中是/usr/lib/jvm/java ⇒ /usr/java/jdk1.7.0_45 。 尝试在所有bash文件中查找java/bin文本。

在您的终端打开超级用户权限

 vi etc/environment 

在打开的文件上添加JAVA_HOME路径

 JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386/" 

希望您设置JAVA_HOME检查是否使用命令设置了JAVA_HOME

 echo $JAVA_HOME 

我使用OpenJDK作为默认java,在/ etc / environment中更新了JAVA_HOME并且所有问题都已解决。 感谢您为此所做的一切努力

我有同样的问题。 我的解决方法是:

 cd /usr/lib/jvm/java-8-oracle/jre/bin sudo ln -s /usr/lib/jvm/java-8-oracle/bin/java java