sbt在Windows上使用play 2.2.1正常工作,但在CentOS上出现编译错误

时间:2013-12-22 14:12:44

标签: playframework-2.0 sbt

在Cloudhopper库中发现错误后,我们决定将项目迁移到Play Framework 2.2.1。在Windows上,迁移很顺利,项目在Java 6和7上编译并运行。

当我使用OpenJDK 7.0将项目部署到CentOS机器时,我面临Syntax error, parameterized types are only available if source level is 5.0

ERROR in /home/yaron/backup-manager-arseny/app/com/tjat/constants/ErrorConstants.java         (at line 6)[0m
[0m[[31merror[0m] [0m   UnableToCreateDirectory("Could not create directory on   disk"), 
[0m[[31merror[0m] [0m   FileNotFound("The specific file was not found"), [0m
[0m[[31merror[0m] [0m   UnableToReadFile("The file could not be loaded from disk"), 
[0m
[0m[[31merror[0m] [0mSyntax error on tokens, delete these tokens[0m
[0m[[31merror[0m] [0m   public List<Contact> getContactList(Long page, int      contactsPerPage);[0m
[0m[[31merror[0m] [0m               ^^^^^^^[0m
[0m[[31merror[0m] [0mSyntax error, parameterized types are only available if source level is 5.0[0m
[0m[[31merror[0m] [0m210 problems (210 errors)[0m
[0m[[31merror[0m] [0m(compile:[31mcompile[0m) javac returned nonzero exit code[0m

要解决此问题,我将以下javacOptions添加到Build.scala

javacOptions ++= Seq("-source", "5.0")

然后又出现了另一个错误:

[error]  ERROR in /home/yaron/backup-manager-arseny/app/com/tjat/backupmanager/BackupManagerImpl.java (at line 37)
[error]         public String retrieveContacts(String userId, String backupId, String    fromId, String toId) throws ApiException {
[error]                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error] The method retrieveContacts(String, String, String, String) of type BackupManagerImpl must override a superclass method

在另一台机器上的Windows上编译Eclipse项目没有问题。

问题可能是什么原因?请指教。

1 个答案:

答案 0 :(得分:1)

引用Mark Harrah's answer on the a now defunct mailing list of sbt

  

您可以控制与javaHome一起使用的Java版本:

javaHome := Some(file("/path/to/java/home"))
     

如果你把它放在~/.sbt/global.sbt中,它应该对所有人生效   您的项目和插件构建在您的机器上,而不必   将它作为构建的一部分发布(它不适用于其他人)。

使用javaHome设置在项目(或任何其他目录中)查询值以查看其全局配置。

$ sbt --warn 'help javaHome'
Selects the Java installation used for compiling and forking.  If None, uses the Java installation running the build.

$ sbt --warn info 'show javaHome'
[info] None

如果javaHome设置未设置(None是上面显示的结果),则系统使用默认JVM。

还检查启动sbt如何设置JVM的shell脚本。有关更多指导,请参阅sbt官方文档中的Manual Installation