2013-02-19 97 views
4

我对Cygwin有这个问题。我安装了Java 1.6和1.7。我想在Java 1.7中使用maven 3.0.4,但我不想卸载Java 1.6。我JAVA_HOME样子:Cygwin运行错误版本的java

C:\Program Files\Java\jdk1.7.0_09 

,当我在Cygwin的运行 Java的版本 我得到:

java version "1.6.0_29" 
Java(TM) SE Runtime Environment (build 1.6.0_29-b11) 
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode) 

,当我在cmd.exe的运行相同的命令,我得到:

java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 

有谁知道如何解决这个问题?

+5

cygwin中'echo $ PATH'的输出是什么? – user000001 2013-02-19 10:44:43

+0

你也可以用unix/cygwin中的which java命令来检查java二进制文件是否正在运行。 – gaborsch 2013-02-19 11:44:58

回答

4

这里有两个不同的问题。


第一个问题是,为什么java -version是寻找在Cygwin和经典Windows命令解释器不同的Java安装。

答案很可能是您的Cygwin和Windows环境分别具有$PATH%PATH%的不同值。如果您希望Cygwin上的java -version运行Java 7,则需要确保Cygwin $PATH包含Java 7 bin目录...以适当的语法。


第二个问题是如何在Cygwin下获得mvn命令使用Java 7

答案不是那么直接:

  • 设置$PATH可能会解决你的问题。

  • 根据Maven安装文档,mvn包装脚本应该使用(Cygwin)shell中的$JAVA_HOME环境变量来决定要使用哪个Java。

  • 找出实际情况的方法是查看包装器脚本并查看它们实际在做什么。如果阅读脚本太难了,请尝试“黑客入侵”脚本以包含set -vx。这将告诉你正在读取哪些脚本行,以及正在执行哪些命令。

  • 最后,POM文件可以影响构建的源和目标级别......独立于运行构建的JVM。

+1

$ PATH和$ JAVA_HOME参考java 7目录但java -version显示java 1.6 – MounirReg 2015-03-30 08:24:23