【问题标题】:Having JAVA_HOME inconsistency issue with maven与 maven 存在 JAVA_HOME 不一致问题
【发布时间】:2015-01-02 18:32:33
【问题描述】:

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

java-版本

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 release:prepare 时,我看到的如下:

[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 检查。

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

我无法在此处找到解决此问题的方法。有没有人遇到过类似的情况?

编辑 1:

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12</version>
                <configuration>
                    <excludes>
                        <exclude>**/*ITest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <meminitial>128m</meminitial>
                    <maxmem>512m</maxmem>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <preparationGoals>clean verify</preparationGoals>
                    <tagBase>https://xxxx/svn/projectname/tags</tagBase>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>maven-apt-plugin</artifactId>
                <version>1.0</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.9</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

我已经切换到 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 ...

【问题讨论】:

  • 您是否安装了完整的 JDK 或仅安装了 JRE?它适用于 java-7 吗?你的 pom 中有哪些编译器选项?
  • 是的,已安装完整的 jdk。也不适用于 java 7。我已经编辑了帖子。谢谢
  • 投反对票吧!?您是如何得出我的 java home 未设置为您的帖子所指的结论的?我不是在寻求有关如何设置 java home 的帮助,来吧...如果您愿意阅读,您至少会明白这就是 maven.like 认真阅读 Java Home 的全部内容.....你为什么对你甚至不理解的事情投反对票?
  • 请发布完整的mvn -X日志。

标签: java maven release java-home


【解决方案1】:

我遇到了同样的问题。我的解决方法是:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 你好,在我迁移到 oracle-java 7 之前是这样的
    【解决方案3】:

    我使用 OpenJDK 作为默认 java ,更新了 /etc/environment 中的 JAVA_HOME ,所有问题都解决了。感谢您的所有努力帮助我度过这个难关

    【讨论】:

      【解决方案4】:

      在你的终端上以超级用户权限打开

      vi etc/environment
      

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

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

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

      echo $JAVA_HOME
      

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          另一种解决方法:

          export JAVACMD=$JAVA_HOME/bin/java
          

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-07-18
              • 1970-01-01
              • 2015-06-02
              • 2020-04-30
              • 2017-12-27
              • 1970-01-01
              • 2014-01-11
              相关资源
              最近更新 更多