2013-12-22 16 views
0

在Cloudhopper庫中發現錯誤後,我們決定將我們的項目遷移到Play Framework 2.2.1。在Windows上遷移了罰款和項目編譯和運行在Java 6和7sbt可以在Windows 2.2.1上正常運行,但在CentOS上出現編譯錯誤

當我部署的項目,CentOS的機器,與OpenJDK的7.0,我面臨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 

爲了解決這個問題,我增加了以下javacOptionsBuild.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

什麼改變了錯誤是'[0m [[31merror [0m]'然後變成了'[error]'? 'sbt about'的輸出是什麼?你如何開始?什麼是sbt啓動腳本?請參閱[如何在CentOS 4和CentOS 5上安裝Java](http://wiki.centos.org/HowTos/JavaOnCentOS)。 –

+0

[0m [[31merror [0m]可能只是複製粘貼碎片 其餘全部爲默認 – arseny

+0

其他問題呢? 'sbt about'?那麼'java -version'呢?關於sbt的啓動腳本呢?這應該導致一個答案。 –

回答

1

報價Mark Harrah's answer on the a now defunct mailing list of sbt

您可以控制的Java版本使用javaHome

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的shell腳本如何設置JVM。請參見sbt官方文檔中的Manual Installation以獲取更多指導。

+0

是確實是我們的javac版本升級到1.7問題解決後爲1.6 .. 謝謝 – arseny

相關問題