4

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

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

当我在 Cygwin 中运行 java -version 时,我得到:

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)

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

4

1 回答 1

3

这里有两个单独的问题。


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

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


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

答案不是那么直截了当:

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

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

  • 找出真正发生的事情的方法是查看包装脚本并查看它们实际在做什么。如果阅读脚本太难,请尝试“破解”脚本以包含set -vx. 这将告诉您正在读取脚本的哪些行,以及正在执行哪些命令。

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

于 2013-02-19T11:26:38.783 回答