AdWordsServices ClassDefNotFound error

150 views
Skip to first unread message

Artem Baltser

unread,
Mar 9, 2016, 8:58:36 AM3/9/16
to AdWords API Forum
Hi there)
Recently I deployed my new version to a appEngine and got these errors in a log of the appEngine:
javax.servlet.ServletContext log: Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.gwtplatform.dispatch.rpc.shared.Result com.gwtplatform.dispatch.rpc.shared.DispatchService.execute(java.lang.String,com.gwtplatform.dispatch.rpc.shared.Action) throws com.gwtplatform.dispatch.shared.ActionException,com.gwtplatform.dispatch.rpc.shared.ServiceException' threw an unexpected exception: java.lang.NoClassDefFoundError: Could not initialize class com.google.api.ads.adwords.jaxws.factory.AdWordsServices at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:415) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:605) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:48) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 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:37) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60) 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:260) 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:78) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:148) at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:468) at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437) at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444) at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:256) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:235) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.google.api.ads.adwords.jaxws.factory.AdWordsServices at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.fillCampaigns(GetGaCampaignsHandler.java:68) at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.execute(GetGaCampaignsHandler.java:53) at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.execute(GetGaCampaignsHandler.java:1) at com.gwtplatform.dispatch.rpc.server.AbstractDispatchImpl.doExecute(AbstractDispatchImpl.java:154) at com.gwtplatform.dispatch.rpc.server.AbstractDispatchImpl.execute(AbstractDispatchImpl.java:110) at com.gwtplatform.dispatch.rpc.server.AbstractDispatchServiceImpl.execute(AbstractDispatchServiceImpl.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:44) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:48) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 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 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 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437) at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444) at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:256) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) ... 1 more

The code peace looks like:
AdWordsServices adWordsServices = new AdWordsServices();
Credential credential = CredentialManager.getCredential(getCurrenAppUser().getId());
AdWordsSession session = new AdWordsSession.Builder().withDeveloperToken(DEVELOPER_TOKEN)
 
.withUserAgent(USER_AGENT).withOAuth2Credential(credential).withClientCustomerId(awClientCustomerId)
 
.build();
CampaignServiceInterface campaignService = adWordsServices.get(session, CampaignServiceInterface.class);
The proplem happens at the first line...My project is not maven(Google web application project)...I saw problems solved with pom.xml...
Using libraries:
Guice 4.0
AppEngineSDK 1.9.25
ads-lib-2.8.0
ads-lib-appengine-2.8.0
adwords-appengine-2.8.0


It works locally...I've spent many time to find out what's going wrong...Please help me

Josh Radcliff (AdWords API Team)

unread,
Mar 9, 2016, 12:49:11 PM3/9/16
to AdWords API Forum
Hi,

Sorry to hear this is giving you trouble. Have you tried logging the classpath from your deployed version and your local version (where things work) at runtime to see if there are any differences? That error suggests that there's a classpath issue on your deployed version.

Also, you mentioned that you deployed your new version to AppEngine - does that mean you have successfully run previous versions on AppEngine? If so, could you let me know what changed in your application or deployment between the last successful deployment and the current one?

Thanks,
Josh, AdWords API Team

Artem Baltser

unread,
Mar 10, 2016, 2:05:50 AM3/10/16
to AdWords API Forum
There are many changes...Actually, I guess frontend changes like in tables and so on.. do not cause such errors...only client side...But there was added AdWords API requests...it works without requests
Message has been deleted

Artem Baltser

unread,
Mar 10, 2016, 3:41:53 AM3/10/16
to AdWords API Forum
I tried logging and found out that my classpath is not full...at least AdWords libs don't exist ... What I need to do?Why it happens?

Josh Radcliff (AdWords API Team)

unread,
Mar 10, 2016, 6:21:39 PM3/10/16
to AdWords API Forum
Hi,

I'd see how you usually add runtime dependencies to your deployment's runtime classpath, and confirm that you're doing the same for the Java client library dependencies.

Also, is it just the Java client library dependencies you don't see in your logs, or are all of your dependencies missing?

Thanks,
Josh, AdWords API Team
Message has been deleted

Artem Baltser

unread,
Mar 15, 2016, 2:01:43 AM3/15/16
to AdWords API Forum
I was wrong, all libs exist in logs
I guess you didn't work with appengine, may be the error is about that...I have one project, it has adwords 2.4.0 and still works...

Josh Radcliff (AdWords API Team)

unread,
Mar 15, 2016, 10:36:23 AM3/15/16
to AdWords API Forum
Hi,

Yes, you're right -- I haven't personally worked with AppEngine much :), but hopefully I can still help resolve this.

Is the client library version the only difference between the project using 2.4.0 and the project that's failing?

Also, for the NoClassDefFoundError, does that get thrown at the new AdWordsServices() call or when you call get on the AdWordsServices object?

Thanks,
Josh, AdWords API Team

Artem Baltser

unread,
Mar 16, 2016, 2:27:18 AM3/16/16
to AdWords API Forum
I resolved problem by adding some updated libraries:
AdWords 2.11.0(all 3 libs)
Joda-time 2.8.2
Guava 19.0
Guava-gwt 19.0
Guice 4.0(all 3 libs)
Opencsv 1.8
Commons-configuration 1.10
Commons-lang 2.6
Commons-collections 3.2.2
Commons-beanutils 1.9.2
Also a removed all unused libs from war/web-inf/lib




Josh Radcliff (AdWords API Team)

unread,
Mar 16, 2016, 8:59:32 AM3/16/16
to AdWords API Forum
Hi,

That's great news -- thanks for providing details so others can benefit from your investigation.

Cheers,
Josh, AdWords API Team
Reply all
Reply to author
Forward
0 new messages