我安装了多个版本的java。最近在测试时我注意到cygwin和powershell运行的是不同的版本,并认为这是我的路径问题,但它看起来有些陌生。在powershell中我得到:
PS C:\Users\djpeaco> echo $env:JAVA_HOME
PS C:\Users\pavon> where.exe java
C:\Windows\System32\java.exe
PS C:\Users\pavon> C:\Windows\System32\java.exe -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
然后在cygwin(bash):
$ echo $JAVA_HOME
$ which java
/cygdrive/c/Windows/system32/java
$ /cygdrive/c/Windows/system32/java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)
我尝试重新打开两个炮弹,以防有一些环境发生变化但没有找到,但这并没有解决问题。此外,cmd.exe的行为与powershell相同。有谁知道为什么在cygwin和powershell中运行完全相同的可执行文件会最终运行不同的JVM?
答案 0 :(得分:3)
Cygwin是32位应用吗?如果Cygwin是32位,操作系统可能会将c:\windows\system32
(真正的64位System32文件夹)重定向到c:\windows\syswow64
(32位System32文件夹),这是可能的。
将java.exe
中的c:\windows\system32
与java.exe
中的c:\windows\syswow64
进行比较。他们可能会有所不同。