2013-02-19 100 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