java - 与 Maven 有 JAVA_HOME 不一致问题

标签 java maven release java-home

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

设置默认 java

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 主目录更改为 /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 以反射(reflect)此 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

关于java - 与 Maven 有 JAVA_HOME 不一致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26776303/

相关文章:

java - 我可以在另一个类中发送自定义事件或调用另一个方法而不等待结果吗?

java - Jenkins:Gerrit 触发器问题的设置

java - 使用crawler4j在类之间传输一个对象

asp.net - ASP.NET文件编译调试="false"时生成PDB文件?

java - 选择editText时如何隐藏部分布局

java - 为什么我在 maven 中添加的依赖项会出现模块丢失错误,并且我需要解决它?

java - IntelliJ Maven JAR "No main manifest attribute error"

java - Maven 对源项目的依赖(爆炸)

python - python 2. 7's download package "Windows x86 MSI程序数据库”的目的是什么?

objective-c - 属性赋值后自动释放