gpt4 book ai didi

java - 如何让google app engine的开发servlet找到RestApiServlet?

转载 作者:行者123 更新时间:2023-11-30 00:21:58 24 4
gpt4 key购买 nike

我有一个旧的 Android 项目,我在其中使用了 Google 应用引擎后端。恢复项目后,我必须按照 https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating 迁移到应用程序引擎的 V2.0。

我不得不做很多更改并偶然发现了几个问题,其中一些已通过遵循此处的建议得到解决: http://android.serverbox.ch/?p=1891&cpage=1#comment-146146

我能够运行开发服务器并使用网络打开端点页面。但是,当我运行我的应用程序并连接到端点以将一些数据写入文件时,我收到以下错误:

Could not initialize class com.google.api.server.spi.tools.devserver.RestApiServlet

Caused by:

java.lang.NoClassDefFoundError: Could not initialize class com.google.api.server.spi.tools.devserver.RestApiServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:134) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:95) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:508) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 09-08 19:42:54.284 14926-15331/com.androdev.flightlog E/FlightLog: at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

似乎某些库 (jar) 尚未加载或 jetty 服务器未运行正确的代码。我发现它正在寻找的类 (RestApiServlet) 出现在 gradle 缓存的一个 jar 中:appengine-local-endpoints-1.9.55.jar

我怎样才能加载它?或者我还需要做些什么来重新配置服务器?

PS:可能关系不大,但这都是在Android Studio下完成的。因此,Android Studio 应该可以帮助设置,但我的经验是,它通常会驱使您关注更新并让您处于崩溃状态。就是这样一种情况。我用“android-studio”标记了这个问题,但没有提到这一切都在 Android Studio 下。

最佳答案

事实证明,用于迁移的 Google 页面已更新。再次阅读说明并确保我的所有 gradle 文件都遵循更新的说明确实可以解决问题。后端 gradle 文件和 web.xml 文件中的一些更改似乎是问题所在。

关于java - 如何让google app engine的开发servlet找到RestApiServlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com