GAE入门Java Eclipse Indigo – 无法编译为1.6

我觉得我一直跟着这个圈子走。 我在Eclipse中遵循了Google App Engine的入门指南( https://developers.google.com/appengine/docs/java/gettingstarted/ ),一切都相当顺利,直到我将其上传到App Engine。

我收到了500个错误,所以我检查了日志并发现:“guestbook / SignGuestbookServlet:Unsupported major.minor version 51.0”

然后我搜索这个问题(当然是在stackoverflow上)并找到了这个解决方案: Google App Engine和Java Version?

因此,我将合规性级别设置为1.6,然后在对话框的底部,我收到警告“当选择1.6合规性时,请确保已安装并激活兼容的JRE(当前为1.7)”。

我很高兴点击OK,它会提示重建。 在重建之后,我得到了这个新错误:“Java编译器级别与已安装的Java项目方面的版本不匹配。”

没有故意在项目中使用任何方面我搜索一些帮助(再次在stackoverflow上)并找到: “Faceted Project Prblem(Java Version Mismatch)”错误消息

不幸的是它甚至没有帮助,因为我没有使用Maven,当我调出项目的属性时,没有Project Properties – > Project Facets面板供我更改版本。

因此,似乎我遇到了无法在Eclipse中编译或无法部署到App Engine的问题。 我知道我可能在这里遗漏了一些明显的东西,但我不能完全指责它。

更新:我已卸载所有JRE和JDK,并仅重新安装了jdk1.6.0_32。 问题继续完全相同。

答案,至少在我的情况下,似乎是如果在创建Web应用程序时将Eclipse默认编译器级别设置为1.7,则无法成功将其切换为1.6。

示例1:使用JRE 1.6

  1. 在eclipse中将Preferences-> Java-> Installed JRE设置为jdk 1.6.0_32
  2. 将Preferences-> Java-> Compiler设置为合规级别1.6
  3. 使用谷歌插件创建“新Web应用程序”
  4. 在本地运行 – 成功
  5. 部署到应用程序引擎,远程运行 – 成功

示例2:使用JRE 1.7

  1. 在eclipse中将Preferences-> Java-> Installed JRE设置为jdk 1.7.0_04
  2. 将Preferences-> Java-> Compiler设置为合规级别1.7
  3. 使用谷歌插件创建“新Web应用程序”
  4. 在本地运行 – 成功
  5. 上传到应用引擎 – 失败(不支持的major.minor版本51.0)
  6. 在eclipse中设置Preferences-> Java-> Compiler to compliance level 1.6 – failure(不会在本地编译(Java编译器级别与安装的Java项目facet的版本不匹配)。

解:

在使用google插件创建Web应用程序之前,请将JRE和编译器级别切换为1.6(如示例1所示)。

如果你的项目已经存在,那么希望你没有太多的东西,并且可以再次创建它。

在解决了这个问题几个小时之后,在war文件夹中删除我的nocache.js就是最后一块拼图。

与上面的答案相反,在1.7中创建应用程序后,我能够成功降级到合规级别1.6