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

时间:2012-05-22 01:20:00

标签: java eclipse google-app-engine eclipse-indigo facet

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

我收到500个错误,所以我检查了日志,发现:“guestbook / SignGuestbookServlet:不支持的major.minor版本51.0”“

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

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

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

没有故意在项目中使用任何方面我搜索了一些帮助(再次在stackoverflow上)并找到:"Faceted Project Prblem (Java Version Mismatch)" error message

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

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

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

3 个答案:

答案 0 :(得分:7)

我遇到了同样的问题。我能够通过使用Navigator视图和编辑.settings / org.eclipse.wst.common.project.facet.core.xml来解决,改为:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <installed facet="java" version="1.6"/>
</faceted-project>

在此更改之后,错误消失了,我可以使用jre1.7但java 1.6合规级别在DevMode中成功运行GWT项目。

似乎应该有一种方法可以通过项目配置来编辑这个java facet,但我在Juno中找不到它。

答案 1 :(得分:2)

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

示例1:使用JRE 1.6

  1. 在eclipse中设置Preferences-&gt; Java-&gt;安装JRE到jdk 1.6.0_32
  2. 将首选项 - >&gt; Java-&gt;编译器设置为合规级别1.6
  3. 使用google插件创建“新建Web应用程序”
  4. 在本地运行 - 成功
  5. 部署到应用引擎,远程运行 - 成功
  6. 示例2:使用JRE 1.7

    1. 在eclipse中设置Preferences-&gt; Java-&gt;安装的JRE到jdk 1.7.0_04
    2. 将首选项 - &gt; Java-&gt;编译器设置为合规级别1.7
    3. 使用google插件创建“新建Web应用程序”
    4. 在本地运行 - 成功
    5. 上传到应用引擎 - 失败(不支持的major.minor版本51.0)
    6. 在eclipse中设置Preferences-&gt; Java-&gt;编译器到合规级别1.6 - 失败(不会在本地编译(Java编译器级别与安装的Java项目方面的版本不匹配)。
    7. <强>解决方案:

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

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

答案 2 :(得分:2)

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

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