Cygwin运行错误的java版本

时间:2013-02-19 10:41:37

标签: java cygwin

我对Cygwin有这个问题。我安装了Java 1.6和1.7。我想在Java 1.7中使用maven 3.0.4,但我不想卸载Java 1.6。我的JAVA_HOME看起来像:

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

我跑的时候     java -version 在Cygwin我得到:

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)

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

1 个答案:

答案 0 :(得分:3)

这里有两个不同的问题。


第一个问题是为什么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。