3

我在尝试写入 Google 商店时收到 IOException

堆栈跟踪已附加

com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:574) 处 com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:601) 处的 java.io.IOException。 google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:481) 在 com.google.appengine.api.files.FileServiceImpl.createNewGSFile(FileServiceImpl.java:151) 在 guestbook.StoreFileServlet.Insert(StoreFileServlet.java: 106) 在 guestbook.StoreFileServlet.doPost(StoreFileServlet.java:76) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 在 com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.apphosting .runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java:43) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 在 org. mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 在 com.google.apphosting.runtime .jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:326) 在org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 在 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 在 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable( RpcRequestParser.java:76) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter。serviceRequest(JettyServletEngineAdapter.java:135) 在 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:446) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com .google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext. java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 com.google.apphosting.runtime .ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 在 java.lang.Thread。运行(Thread.java:679) 引起:com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 8: at java.lang.Thread.getStackTrace(Thread.java:1495) at com.google.apphosting.runtime .ApiProxyImpl.doSyncCall(ApiProxyImpl.java:237) 在 com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:68) 在 com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:182 ) 在 com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java: 180) 在 com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101) 在 com.google.apphosting.api 的 com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:68)。ApiProxy.makeSyncCall(ApiProxy.java:50) at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:570) ... 36 更多原因:com.google.apphosting.api.ApiProxy$ApplicationException : ApplicationError: 8: at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.failure(ApiProxyImpl.java:546) at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:788)在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref( TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com。com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:828) 上 com.google.net.rpc3.client 上的 google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)。 RpcStub$RpcCallbackDispatcher.failure(RpcStub.java:819) 在 com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:906) 在 com.google.net.rpc3.impl.client.RpcClientInternalContext。 com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1062) 上的finishRpcAndNotifyApp(RpcClientInternalContext.java:809) com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel. java:908) 在 com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2265) 在 com.google.net.rpc3.impl.client.RpcNetChannel。messageReceived(RpcNetChannel.java:2077) at com.google.net.rpc3.impl.client.RpcNetChannel.access$2000(RpcNetChannel.java:147) at com.google.net.rpc3.impl.client.RpcNetChannel$TransportCallback.receivedMessage (RpcNetChannel.java:3115) 在 com.google.net.rpc3.impl.client.RpcChannelTransportData$TransportCallback.receivedMessage(RpcChannelTransportData.java:602) 在 com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport .java:420) 在 com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseOneMessage(RpcClientTcpTransport.java:773) 在 com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseMessages(RpcClientTcpTransport.java:651 ) 在 com.google.net.rpc3.impl.wire.RpcClientTcpTransport$1 的 com.google.net.rpc3.impl.wire.RpcClientTcpTransport.access$100(RpcClientTcpTransport.java:38)。dataReceived(RpcClientTcpTransport.java:293) 在 com.google.net.async3.SocketConnection.handleNetworkReadEvent(SocketConnection.java:843) 在 com.google.net.async3.SocketConnection.access$400(SocketConnection.java:40) 在 com。 com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260) 上 com.google.net.eventmanager.AbstractFutureTask 上的 google.net.async3.SocketConnection$NetworkReadHandlerImpl.run(SocketConnection.java:872)。在 com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:997) 在 com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:576) 在 com.google 运行(AbstractFutureTask.java:121) .net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:878) 在 com.google.net.eventmanager.WorkerThreadInfo。runWorkerLoop(WorkerThreadInfo.java:134) 在 com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1833)

代码如下

    FileService fileService = FileServiceFactory.getFileService();
    GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
      .setBucket("mybucket")
      .setKey(key)
      .setMimeType("text/html")
      .setAcl("public-read")
      .addUserMetadata("myfield1", "my field value");
    try {
        AppEngineFile writableFile = fileService.createNewGSFile(optionsBuilder.build());
        // Open a channel for writing
        boolean lockForWrite = false;
        FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, lockForWrite);
        PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
        out.println(value);
        out.close();
        writeChannel.closeFinally();
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

我正在使用 App Engine SDK 1.6.4

谢谢

4

2 回答 2

2

我通过使用 App Engine SDK 1.7 而不是 1.6.3.1 解决了这个问题(这会导致问题)

我的代码没有任何变化。只需将 App Engine SDK 版本更改为 1.7。

于 2012-07-25T17:30:48.413 回答
2

这解决了。这是典型的不耐烦的新手问题:)

我没有做的是给我的应用程序许可到谷歌云存储项目[我错过了]。

请参阅先决条件 5

https://developers.google.com/appengine/docs/java/googlestorage/overview

于 2012-04-07T02:53:37.380 回答