【发布时间】: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 呢?