2013-01-11 55 views
2

我開發了一個帶有Google Web Toolkit的小應用程序,並且希望將其部署到Google App Engine(GAE)服務器。我默認使用Eclipse Juno和Java 7,但是當我嘗試部署到GAE時,我意識到它還不支持Java 7。所以我在項目設置中切換到Java 6 JRE(將Build Path/Libraries設置爲「java-6-openjdk-amd64」並將Java Compiler/Compiler合規級別設置爲1.6。通過谷歌的Eclipse插件應用程序,它仍然拋出相同的RuntimeException:如何在Eclipse for Google App Engine中從Java 7切換到Java 6?

"The application contains Java 7 classes, but the --use_java7 flag has not been set."

下面是完整的調試輸出:

Unable to update: 
java.lang.RuntimeException: The application contains Java 7 classes, but the --use_java7 flag has not been set. 
     at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:576) 
     at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:370) 
     at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:53) 
     at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:433) 
     at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:148) 
     at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) 
     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

我如何刪除Java 7的餘數,使得谷歌插件理解

這是所有在Ubuntu 12.10 64位上運行的。

+0

您是否在部署之前「清理」了您的項目?項目 - >清潔 – beder

+0

是的,我做到了。雖然沒有區別。 :( – Carsten

+0

試着用Java 6 ** JDK **啓動eclipse,如下所述:http://wiki.eclipse.org/Eclipse.ini#-vm_value:_Linux_Example。使用JDK而不是JRE,因爲GAE只適用於Java JDK(版本6或以下) – Eich

回答

1

唯一我終於可以幫助它在Eclipse中創建一個新項目,立即切換到Java 6(構建路徑,編譯器,Java構面),並複製/粘貼前一個項目中的所有文件和GAE設置。

4

您可能正在使用Java 7安裝進行編譯。在eclipse中,轉至窗口>首選項。在那裏,瀏覽至Java>安裝的JRE

右邊的列表可能只顯示你的情況下的jre/jdk7。您必須在此處添加Java 5或6的安裝,並確保它是「打勾的」JRE。

然後,使用項目>清理...,選擇「清理所有項目」,並確保「立即開始構建」與「構建整個工作空間」一起打勾。

[編輯:這個答案是不準確的Android開發......當我意識到,一個quck搜索發現,這個問題看上去非常接近Failed to deploy to Google App Engine because --use_java7 flag has not been set,答案很可能是相同的。]

+0

做到這一點,不過因爲我的其他項目實際上需要Java 7,但它帶來了某種進步。唉,當我現在執行Clean時,我得到一個RuntimeException「由java導致:java .lang.UnsupportedClassVersionError:com/schnobo/entropie/client/Entropie:不支持major.minor版本51.0「。這清楚地表明Java 7編譯器仍然編譯了一些東西,但我想我已經在Eclipse設置中刪除了所有指向Java 7的指針。 – Carsten

+0

在「清潔」過程中,您會遇到此異常?看起來更像是應該在運行時彈出的東西。我並不真正瞭解你的環境:我在編輯中提到的問題提到,GAE使用了一些Java 7功能,這意味着它是針對jdk 7編譯的,並且只能在Java 7本身下運行......因此你的程序運行的虛擬機應該是java 7 ...而這個異常告訴我們,否則(運行一個用java n編譯的類與早期的虛擬機一起運行時會拋出這個異常)。如果沒有對環境的更好理解,我恐怕無法回答有意義的問題。 – Kellindil

+0

我假設這個異常實際上是在clean之後自動執行的構建過程中產生的。恐怕我會嘗試啓動一個新的Java 7項目,手動複製所有文件,並查看它是如何工作的。 – Carsten

相關問題