![](/img/trans.png)
[英]ClassNotFoundException: com.google.appengine.tools.development.DevAppServerMain
[英]ClassCastException:com.google.appengine.tools.development.ApiProxyLocalImpl cannot be cast to com.google.appengine.tools.development.ApiProxyLocal
我是开发maven应用程序并部署到谷歌应用程序引擎的新手。 我正在使用appengine 1.9.0
和eclipse kepler 4.3
然而,当我尝试运行时,我得到一个错误,根据这个博客克里斯,它建议删除这个jar。
appengine-api-labs
appengine-api-stubs
appengine-testing
我已经在库中删除它并尝试maven清理但仍然出现错误。 下面是我的图书馆。
以下是完整的控制台错误:
WARNING: failed _ah_ServeBlobFilter: java.lang.ClassCastException: com.google.appengine.tools.development.ApiProxyLocalImpl cannot be cast to com.google.appengine.tools.development.ApiProxyLocal
3 20, 2014 2:34:57 午前 com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Failed startup of context com.google.appengine.tools.development.DevAppEngineWebAppContext@87ec13{/,C:\Users\Annette\Desktop\WebCaller\src\main\webapp}
java.lang.ClassCastException: com.google.appengine.tools.development.ApiProxyLocalImpl cannot be cast to com.google.appengine.tools.development.ApiProxyLocal
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.init(ServeBlobFilter.java:55)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:250)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:305)
at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
at com.google.appengine.tools.development.Modules.startup(Modules.java:97)
at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:255)
at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:213)
at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:211)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211)
at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277)
at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:219)
at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:210)
任何人都可以指出它吗? 谢谢。
我采取了以下步骤来解决问题:
令人惊讶的是,虽然我的WEB-INF / lib上有appengine-api-labs,但我的localhost部署工作正常。
最后,我的WEB-INF / lib包含以下内容:
我希望有所帮助。 它对我有用,它有可能对你有用。
正确的解决方案是确保您的类路径上只有一个版本的appengine-testing.jar与您的App Engine SDK相对应, 并且您的类路径或/WEB-INF/lib
没有appengine-tools-api.jar /WEB-INF/lib
文件夹。
如果您符合这些条件,仍然有此错误,从你的classpath 和删除的AppEngine-testing.jar /WEB-INF/lib
,如果你拥有了它在那里,然后将其重新添加到您的类路径。
首先,我尝试了安德烈·沃尔金提供的解决方案,但它对我不起作用。 然后我从/WEB-INF/lib
删除了 appengine-api-stubs.jar ,修复了bug。
要恢复,我在/WEB-INF/lib
文件夹中有 appengine-api-libs和appengine-api-testing 。 而且我只对类路径进行了appengine-api测试 。
添加最新的依赖项并清理构建并再次运行它应该在本地工作。 我可以解决同样的问题。
将以下依赖项添加到pom.xml
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-testing</artifactId>
<version>1.9.64</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>1.9.64</version>
<scope>test</scope>
</dependency>
有这个确切的问题。 使用maven,我为所有与测试相关的依赖项添加了测试以解决问题。 我认为这只是另一种避免类路径中冲突的jar的方法。
基本上,您需要确保将测试范围添加到要从Target文件夹中删除的jar中。
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-testing</artifactId>
<version>1.9.23</version>
<scope>test</scope>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.