2013-03-06 44 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环境变量来编译项目的源代码。

希望这会有所帮助。

相关问题