我对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)
有谁知道如何解决这个问题?
答案 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。