2013-08-21 40 views
0

我有一個谷歌圖表應用程序,從本地開發環境和雲SQL實例在應用程序引擎環境中在本地eclipse環境中,我遇到了同樣的問題,我通過將guava jar添加到eclipse插件來解決這個問題,但我不確定在遠程appengine環境中需要做什麼來解決此問題。
谷歌appengine問題 - java.lang.NoSuchMethodError:com.google.common.collect.ImmutableList.copyOf(Ljava/util/Collection

的AppEngine上的錯誤日誌:

2013-08-20 05:30:56.160 /oldv2reports/getData?url=jdbc:google:rdbms://onlinederivatives2:oldd/oldd&table=rep_moti_5day_average_data&tq=select%20price_timestamp%2C%20price%20where%20symbol%20%3D%20'ABB'&tqx=reqId%3A1 500 11ms 0kb Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36 
65.24.104.225 - - [20/Aug/2013:05:30:56 -0700] "GET /oldv2reports/getData?url=jdbc:google:rdbms://onlinederivatives2:oldd/oldd&table=rep_moti_5day_average_data&tq=select%20price_timestamp%2C%20price%20where%20symbol%20%3D%20\'ABB\'&tqx=reqId%3A1 HTTP/1.1" 500 0 "http://onlinederivatives2.appspot.com/OLDv2ReportsQuery.html" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" "onlinederivatives2.appspot.com" ms=12 cpu_ms=39 app_engine_release=1.8.3 instance=00c61b117ca0e915b029dbea0126709e88259c36 
W 2013-08-20 05:30:56.157 
Error for /oldv2reports/getData 
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList; 
    at com.google.visualization.datasource.query.QuerySelection.getColumns(Unknown Source) 
    at com.google.visualization.datasource.query.Query.validate(Unknown Source) 
    at com.google.visualization.datasource.query.parser.QueryBuilder.parseQuery(Unknown Source) 
    at com.google.visualization.datasource.DataSourceHelper.parseQuery(Unknown Source) 
    at com.google.visualization.datasource.DataSourceHelper.parseQuery(Unknown Source) 
    at com.google.visualization.datasource.DataSourceRequest.createQueryFromRequest(Unknown Source) 
    at com.google.visualization.datasource.DataSourceRequest.<init>(Unknown Source) 
    at com.google.visualization.datasource.DataSourceHelper.executeDataSourceServletFlow(Unknown Source) 
    at com.google.visualization.datasource.DataSourceServlet.doGet(Unknown Source) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) 
    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) 
    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.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266) 
    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) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:435) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:442) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:186) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:306) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:298) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:439) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 

回答

2

它看起來就像你有一箇舊版本的Guava在類路徑中,並且com.google.visualization庫需要更新的版本,其中包含ImmutableList.copyOf(Collection)方法。

在您的webapp的庫中添加正確版本的Guava。

+1

是的,我想通了,並添加了番石榴罐,它在我的當地環境中工作正常。但是當部署到appengine時,它似乎在使用舊的收集罐。我怎樣才能解決這個appengine部署? – user2697991

+0

我檢查了... war/WEB-INF/lib目錄中的ImmutableList.class,發現下列jar包含它:二進制文件appengine-api-1.0-sdk-1.8.3.jar匹配 二進制文件appengine-api- labs.jar匹配 二進制文件apps-marketplace.jar匹配 二進制文件guava-14.0.1.jar匹配 不確定哪些罐子可以被移除以解決此問題。 – user2697991