2013-03-06 43 views
7

我使用Java 1.7開發了Play應用程序。現在,我需要編譯它針對1.6版本,因爲它仍然使用了1.6的另一臺主機上執行(我不能更改)如何強制使用Play 2.1與其他Java版本進行編譯

所以我複製的啓動腳本發揮播放1.6和改變了它在某種程度上,以便它使用JDK 1.6版(我已經存儲在目錄中我的電腦上)

當任一目錄下,我得到了想要的信息行

play! 2.1.0 (using Java 1.6.0_38 and Scala 2.10.0), http://www.playframework.org 

當我執行執行這個修改後的腳本在我的項目直接相同的腳本保守黨我得到這哪裏是信息存儲項目使用1.7版的線

play! 2.1.0 (using Java 1.7.0_09 and Scala 2.10.0), http://www.playframework.org 

,我怎麼能強迫它編譯爲1.6?

更新1

馬克西姆Calmels建議,以便執行乾淨最終刪除編譯的配置文件。不幸的是,這並沒有幫助。

更新2

當我輸入java主在劇中控制檯,我得到了

[info] None 

所以我創建了一個文件build.sbt消息和添加的內容

javaHome := Some(file("/usr/java/jdk1.6.0_38")) 

當啓動播放控制檯並鍵入java-home現在我得到的線

[info] Some(/usr/java/jdk1.6.0_38) 

但玩仍然編譯針對1.7版,所以沒有運氣,要麼。

更新3

我只複製播放和我的項目在項目應運行,並有編譯它的主機的工作...... 。不是一個非常優雅的解決方案,我仍然想知道如何在我的機器上本地執行此操作。

+0

您是從命令行還是從IDE進行編譯?如果是後者,請確保您的IDE配置爲使用1.6 – mbatchkarov 2013-03-07 13:57:50

+0

我正在從命令行進行編譯。 – 2013-03-07 14:25:09

+0

我想看看你是如何改變播放文件的,也許你可以在github上分享這些文件或者其他東西,這樣我們就可以看到你如何改變它來使用jdk 1.7。你確定不同的版本是當你在不同的目錄或不同的shell終端,他們可能有不同的JAVA_HOME值? – myyk 2013-04-19 01:25:33

回答

0

我認爲Java版本存儲在編譯文件中。
您是否嘗試在啓動play-1.6腳本之前clean您的項目?

+0

你好!我只是嘗試過,但不幸的是這並沒有解決問題。 – 2013-03-07 12:54:59

1

無論你安裝遊戲,你應該能夠通過更換這個喜歡改變「玩」腳本:

if [ -z "$JAVA_HOME" ]; then 
    JAVA="java" 
else 
    JAVA="$JAVA_HOME/bin/java" 
fi 

這個新行:

JAVA="/TheFullJavaPath/bin/java" 

應該這樣做。那麼該腳本將使用該版本。我建議像命名它一樣命名它 - java-1.X或其他東西。

+1

這實際上是我已經嘗試過的方法之一。我將Java 1.6的路徑硬編碼到播放腳本中,並將其命名爲play-1.6。沒有幫助強硬... – 2013-04-19 09:36:03

0

正如我不能評論:

1)您是否嘗試過在你的shell設置JAVE_HOME,首發出戰過嗎?不要改變劇本。如果它在那裏爲了環境遊戲,也可以在其他地方玩。在bash它會看起來像

#> export JAVA_HOME="/your/jdk/path"; play 

2)您是否嘗試過在遊戲控制檯inspect *:javaHome?如果javaHome已經在項目內的某個地方顯式設置,那應該告訴你在哪裏。對我來說,它看起來像這樣:

[project] $ inspect javaOptions 
[info] Task: scala.collection.Seq[java.lang.String] 
[info] Description: 
[info] Options passed to a new JVM when forking. 
[info] Provided by: 
[info] */*:javaOptions 
[info] Defined at: 
[info] (sbt.Defaults) Defaults.scala:106 
[info] Reverse dependencies: 
[info] *:runner 
[info] Delegates: 
[info] *:javaOptions 
[info] {.}/*:javaOptions 
[info] */*:javaOptions 
[info] Related: 
[info] */*:javaOptions 
0

你可以創建一個用於編譯的Ant腳本嗎? (我必須承認我不熟悉Play,所以我不知道它是否可能)。

這是我做的,然後在編譯目標:

<target name="compile" depends="prepare" description="Compile Java sources"> 
    <!-- Compile Java classes as necessary --> 
    <javac 
    bootclasspath="/path/to/1.6/rt.jar" 
    destdir="/path/to/dest" includeantruntime="false" debug="true" 
    deprecation="false" optimize="true" 
    source="6" target="6" encoding="utf-8"> 
    <src path="/path/to/source" /> 
    <classpath refid="compile.classpath" /> 
    </javac> 
</target> 

的引導類路徑是關鍵。它應該指向安裝Java 1.6,特別是文件rt.jar。

我不知道我的答案應該包括更多關於Ant的背景信息。以防萬一,Ant是創建任務的Java庫(非常一般)。

螞蟻:http://ant.apache.org/ 初學者教程到Ant:http://www.comscigate.com/ant/A_beginners_guide_to_Ant.htm

0

我有這個問題,我解決它設置JAVA_HOME環境變量在當前終端會話。如指定的@Grmpfhmbl

如果您使用sudo update-alternatives --config java或其他任何方法更改java版本,則無關緊要。 play命令總是使用JAVA_HOME環境變量來編譯項目的源代碼。

希望這會有所幫助。

相關問題