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
- 在eclipse中将Preferences-> Java-> Installed JRE设置为jdk 1.6.0_32
- 将Preferences-> Java-> Compiler设置为合规级别1.6
- 使用谷歌插件创建“新Web应用程序”
- 在本地运行 – 成功
- 部署到应用程序引擎,远程运行 – 成功
示例2:使用JRE 1.7
- 在eclipse中将Preferences-> Java-> Installed JRE设置为jdk 1.7.0_04
- 将Preferences-> Java-> Compiler设置为合规级别1.7
- 使用谷歌插件创建“新Web应用程序”
- 在本地运行 – 成功
- 上传到应用引擎 – 失败(不支持的major.minor版本51.0)
- 在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