在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项目没有问题。
问题可能是什么原因?请指教。
答案 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。