【问题标题】:Google App Engine example - error (Java version problem?)Google App Engine 示例 - 错误(Java 版本问题?)
【发布时间】:2011-07-14 12:29:07
【问题描述】:

我已按照说明安装 Google App Engine SDK Eclipse 插件:

http://code.google.com/appengine/docs/java/gettingstarted/installing.html http://code.google.com/appengine/downloads.html#Download_the_Google_Plugin_for_Eclipse

然后我按照说明创建了一个新项目:

http://code.google.com/appengine/docs/java/tools/eclipse.html#Creating_a_Project

但是,当我尝试在 Eclipse 中调试或运行他的项目时,我收到以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: java.util.Collections.newSetFromMap(Ljava/util/Map;)Ljava/util/Set;
    at com.google.appengine.tools.development.LocalEnvironment.<init>(LocalEnvironment.java:63)
    at com.google.appengine.tools.development.AbstractContainerService$LocalInitializationEnvironment.<init>(AbstractContainerService.java:538)
    at com.google.appengine.tools.development.AbstractContainerService.loadAppEngineWebXml(AbstractContainerService.java:288)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:160)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:172)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:164)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)

看来java.util.Collections.newSetFromMap方法找不到了,Java 1.5中确实不存在:http://download.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html

但它确实存在于 Java 1.6 中:http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#newSetFromMap(java.util.Map)

这有点令人困惑,因为 Google App Engine 适用于 Java 1.5,或者至少从包含 SDK 的插件目录来看是这样的:

eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.5.1.r36v201106211634

我不确定为什么我按照说明操作后会收到此错误。

解决方案

@kisp - 感谢它让我走上了解决问题的道路。

我的 Ubuntu 机器上安装了两个版本的 Java(1.5 和 1.6):

/usr/lib/jvm/java-6-sun

/usr/lib/jvm/java-1.5.0-sun

我只向 Eclipse 介绍了 Java 1.5。我需要告诉它1.6。为此,请打开 Eclipse:

Window > Preferences > Java > Installed JREs > Add

JRE home 应该只是指向 Java 安装到的目录,对我来说这是:

/usr/lib/jvm/java-6-sun-1.6.0.24

JRE 名称默认为一个合理的值。

添加后,您可以将其设置为工作区默认设置或设置项目特定设置。右键单击Package Explorer中的项目:

Properties > Java Compiler >  Enable project specific settings

您应该会在下拉菜单中看到新添加的 Java 版本。

【问题讨论】:

  • 很好的调查。但是你为什么不前进到 java 1.6 呢?

标签: java google-app-engine


【解决方案1】:

插件版本与java版本不对应。

我安装了 1.4.2 并使用 java 1.6

【讨论】:

  • 好的。我通过运行“java -version”进行检查,我有 1.6:java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) 但是 Eclipse 可能正在使用 1.5。我会检查的。
  • 这就是问题所在。我将 Google App Engine SDK 版本与所需的 Java 版本混淆了。虽然要在其他地方分担一些责任...安装说明声明支持 Java 1.5 和 1.6:link“Google App Engine 支持 Java 5 和 Java 6。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多