【GAE/Java】SDKを更新するとSlim3でNoClassDefFoundError

375 views
Skip to first unread message

加藤大和

unread,
May 11, 2016, 7:22:52 AM5/11/16
to Google-App-Engine-Japan
eclipseでSlim3を利用しアプリ開発を行っております。
表題の通り、GAEのSDKを1.9.30から1.9.34に更新したところ、クエリを実行しようとした時にNoClassDefFoundErrorが発生するようになってしまいました。

おそらく、新しいSDKでは廃止されたクラスをフレームワーク内で使用しているということだと思うのですが、
フレームワーク内であるため自分で修正することはできず、
かといって今からSlim3を捨てて全部自作し直したり、別のフレームワークに乗り換えることも容易ではなく、
どうしたらいいものかと難儀しております。

当面はSDKを1.9.30に留めておくことで動作はしますが、それもいつまでもそのままというわけにはいかないでしょうし・・・

どなたか、解決策などをご存知でしたら、ご教授願えないでしょうか?
よろしくお願い致します。

【詳細】
■開発環境
 Windows7, eclipse4.2, Slim3

■エラーログ
重大: com/google/appengine/repackaged/com/google/common/util/Base64DecoderException
java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/common/util/Base64DecoderException
at org.slim3.datastore.AsyncDatastoreDelegate.query(AsyncDatastoreDelegate.java:1977)
at org.slim3.datastore.DatastoreDelegate.query(DatastoreDelegate.java:2434)
at org.slim3.datastore.Datastore.query(Datastore.java:4002)
[自作処理でSlimsのDatastore.query(Class<T> class, Key ancestorKey) 呼び出し]
at org.slim3.controller.Controller.runBare(Controller.java:111)
at org.slim3.controller.FrontController.processController(FrontController.java:491)
at org.slim3.controller.FrontController.doFilter(FrontController.java:277)
at org.slim3.controller.FrontController.doFilter(FrontController.java:237)
at org.slim3.controller.FrontController.doFilter(FrontController.java:199)
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.appengine.tools.development.DevAppServerModulesFilter.doRedirectedModuleRequest(DevAppServerModulesFilter.java:415)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:128)
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:98)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at com.google.appengine.tools.development.JettyContainerService.forwardToServer(JettyContainerService.java:460)
at com.google.appengine.tools.development.Modules.forwardToInstance(Modules.java:372)
at com.google.appengine.tools.development.DelegatingModulesFilterHelper.forwardToInstance(DelegatingModulesFilterHelper.java:95)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doRedirect(DevAppServerModulesFilter.java:326)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:119)
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:98)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:513)
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.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
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)
Caused by: java.lang.ClassNotFoundException: com.google.appengine.repackaged.com.google.common.util.Base64DecoderException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:199)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 49 more

加藤大和

unread,
May 11, 2016, 8:20:35 AM5/11/16
to Google-App-Engine-Japan
自己レスです。

原因は特定できていませんが、ビルドパスの構成をいじったり、プロジェクトのクリーンを行っていたら動作するようになりました。
プロジェクトのクリーン自体は何度か試していたので、これだけがトリガーではないと思いますが・・・

ありがとうございました。


2016年5月11日水曜日 20時22分52秒 UTC+9 加藤大和:
Reply all
Reply to author
Forward
0 new messages