3

Googleストアに書き込もうとしているときにIOExceptionが発生します

スタックトレースが添付されています

com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:601)at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:574)atcomのjava.io.IOException。 google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:481)at com.google.appengine.api.files.FileServiceImpl.createNewGSFile(FileServiceImpl.java:151)at 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.ServletHandler $ CachedChain.doFilter(ServletHandler.java:)のorg.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)1166)com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102)at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)at com.google.apphosting .runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java:43)org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)atorg。 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler。のmortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)。java:182)org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)at com.google.apphosting.runtime .jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249)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)at org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:923)at 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)at com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.run(JavaRuntime.java:446)at com.google.tracing.TraceContext $ TraceContextRunnable.runInContext(TraceContext.java:449)at com .google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:455)at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInAliExpressContextNoUnref(TraceContext。 java:333)at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInAliExpressContext(TraceContext.java:325)at com.google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:453)at com.google.apphosting.runtime java.lang.Threadの.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)。run(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)at com.google.apphosting.runtime.ApiProxyImpl.access $ 000(ApiProxyImpl.java:68)at com.google.apphosting.runtime.ApiProxyImpl $ 1.run(ApiProxyImpl.java:182 )com.google.apphosting.runtime.ApiProxyImpl $ 1.run(ApiProxyImpl.java:180)at java.security.AccessController.doPrivileged(Native Method)at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java: 180)com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:68)at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101)atcom.google.apphosting.api。com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:570)のApiProxy.makeSyncCall(ApiProxy.java:50)... 36その他原因:com.google.apphosting.api.ApiProxy $ ApplicationException :ApplicationError:8: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)at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInAliExpressContextNoUnref( TraceContext.java:333)at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInAliExpressContext(TraceContext.java:325)atcom。google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:453)at com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.rpcFinished(RpcStub.java:828)atcom.google.net.rpc3.client。 RpcStub $ RpcCallbackDispatcher.failure(RpcStub.java:819)at com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:906)at com.google.net.rpc3.impl.client.RpcClientInternalContext finishRpcAndNotifyApp(RpcClientInternalContext.java:809)at com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1062)at com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel。 java:908)com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2265)atcom.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)at com.google.net.rpc3.impl.client.RpcChannelTransportData $ TransportCallback.receivedMessage(RpcChannelTransportData.java:602)at com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport .java:420)at com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseOneMessage(RpcClientTcpTransport.java:773)at com.google.net.rpc3.impl.wire.RpcClientTcpTransport.parseMessages(RpcClientTcpTransport.java:651 )com.google.net.rpc3.impl.wire.RpcClientTcpTransport.access $ 100(RpcClientTcpTransport.java:38)at com.google.net.rpc3.impl.wire.RpcClientTcpTransport$1。dataReceived(RpcClientTcpTransport.java:293)at com.google.net.async3.SocketConnection.handleNetworkReadEvent(SocketConnection.java:843)at com.google.net.async3.SocketConnection.access $ 400(SocketConnection.java:40)atcom。 google.net.async3.SocketConnection $ NetworkReadHandlerImpl.run(SocketConnection.java:872)at com.google.net.eventmanager.AbstractFutureTask $ Sync.innerRun(AbstractFutureTask.java:260)atcom.google.net.eventmanager.AbstractFutureTask。 run(AbstractFutureTask.java:121)at com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:576)at com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:997)at com.google com.google.net.eventmanager.WorkerThreadInfoの.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:878)。runWorkerLoop(WorkerThreadInfo.java:134)at com.google.net.eventmanager.EventManagerImpl $ WorkerThread.run(EventManagerImpl.java:1833)

コードiaは次のとおりです

    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 EngineSDK1.6.4を使用しています

ありがとう

4

2 に答える 2

2

1.6.3.1の代わりにAppEngineSDK 1.7を使用してこれを解決しました(これにより問題が発生します)

私のコードには何の変更もありません。AppEngineSDKのバージョンを1.7に変更するだけです。

于 2012-07-25T17:30:48.413 に答える
2

これで解決です。それは典型的なせっかちな初心者の問題です:)

私がしなかったことは、アプリに Google クラウド ストレージ プロジェクトへのアクセス許可を与えることでした [これを見逃していました]。

前提条件 5 を参照してください。

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

于 2012-04-07T02:53:37.380 に答える