2016-03-11 2 views
0

Привет там) Недавно я разворачивал мое приложение GAE и получили ошибку выполнения приложения: ClassDefNotFound и ExceptionInInitializer ошибки Первую ошибка ссылаются на линиюСсылочных библиотеки отсутствуют и ClassDefNotFound ошибка

AdWordsServices services = new AdWordsServices(); 

Полной стек трассировки :

java.lang.ExceptionInInitializerError 
    at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.fillCampaigns(GetGaCampaignsHandler.java:81) 
    at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.execute(GetGaCampaignsHandler.java:65) 
    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 
Caused by: com.google.inject.CreationException: Guice creation errors: 

1) Multibinder is not initialized 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:40) 
    while locating java.util.Set<java.util.Map$Entry<com.google.api.ads.adwords.lib.client.AdWordsServiceDescriptor$AdWordsSubProduct, com.google.inject.Provider<com.google.api.ads.common.lib.client.HeaderHandler<com.google.api.ads.adwords.lib.client.AdWordsSession, com.google.api.ads.adwords.lib.client.AdWordsServiceDescriptor>>>> 
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:461) 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:40) 

2) Multibinder is not initialized 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:50) 
    while locating java.util.Set<java.util.Map$Entry<com.google.api.ads.adwords.lib.client.AdWordsServiceDescriptor$AdWordsSubProduct, com.google.inject.Provider<java.lang.String>>> 
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:461) 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:50) 

3) Error injecting method, java.lang.NoSuchMethodError: com.google.inject.spi.ProviderInstanceBinding.getUserSuppliedProvider()Ljavax/inject/Provider; 
    at com.google.inject.multibindings.Multibinder$RealMultibinder.initialize(Multibinder.java:324) 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:50) 
    while locating java.util.Set<java.util.Map$Entry<com.google.api.ads.adwords.lib.client.AdWordsServiceDescriptor$AdWordsSubProduct, com.google.inject.Provider<java.lang.String>>> 
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:461) 
    at com.google.api.ads.adwords.jaxws.AdWordsJaxWsModule.configure(AdWordsJaxWsModule.java:50) 
Caused by: java.lang.NoSuchMethodError: com.google.inject.spi.ProviderInstanceBinding.getUserSuppliedProvider()Ljavax/inject/Provider; 
    at com.google.inject.multibindings.Indexer.visit(Indexer.java:139) 
    at com.google.inject.multibindings.Indexer.visit(Indexer.java:43) 
    at com.google.inject.internal.ProviderInstanceBindingImpl.acceptTargetVisitor(ProviderInstanceBindingImpl.java:62) 
    at com.google.inject.multibindings.Multibinder$RealMultibinder.initialize(Multibinder.java:332) 
    at com.google.inject.multibindings.Multibinder$RealMultibinder$$FastClassByGuice$$94efefc8.invoke(<generated>) 
    at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53) 
    at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56) 
    at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90) 
    at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110) 
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75) 
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) 
    at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73) 
    at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) 
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) 
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974) 
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:89) 
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider.initialize(MapBinder.java:469) 
    at com.google.inject.multibindings.MapBinder$RealMapBinder$RealProviderMapProvider$$FastClassByGuice$$7fff4848.invoke(<generated>) 
    at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53) 
    at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56) 
    at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90) 
    at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110) 
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75) 
    at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) 
    at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73) 
    at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147) 
    at com.google.inject.internal.Initializer.injectAll(Initializer.java:92) 
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:173) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109) 
    at com.google.inject.Guice.createInjector(Guice.java:95) 
    at com.google.inject.Guice.createInjector(Guice.java:72) 
    at com.google.inject.Guice.createInjector(Guice.java:62) 
    at com.google.api.ads.adwords.jaxws.factory.AdWordsServices.<clinit>(AdWordsServices.java:44) 
    at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.fillCampaigns(GetGaCampaignsHandler.java:81) 
    at com.akolchin.mfroiapp.server.dispatch.ga.GetGaCampaignsHandler.execute(GetGaCampaignsHandler.java:65) 
    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:606) 
    at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_$1.run(Method_.java:171) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_.privilegedInvoke(Method_.java:167) 
    at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_.invoke_(Method_.java:125) 
    at com.google.apphosting.runtime.security.shared.intercept.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) 

или

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) 

и происходит внутри конструктора. Локально все работает нормально, но не для развернутых версий.

Я думаю, что причина в том, что часть упомянутых LIBS отсутствует для развернутой версии ... Я думаю GAE автоматически принимает всю LIBS в войне/WEB-INF/Lib папке в соответствии с Java EE Standart

Вот душевный код я использую, чтобы показать классам ...

URL[] urls = ((URLClassLoader) (Thread.currentThread().getContextClassLoader())).getURLs(); 
for(URL url : urls) 
res+= url.toString() + "\n"; 

Если вы знаете лучший способ показать classpath..show мне плз) Итак ... Что вы думаете? Что мне нужно сделать?

ответ

0

Вам необходимо добавить отсутствующую банку в папку war/WEB-INF/lib. Обратите внимание, что добавить банку в путь сборки недостаточно - это заставит приложение запускаться локально, но вам все равно придется скопировать его в эту папку.

Если вы используете Eclipse, выберите свой проект и зайдите на вкладку «Проблемы». Вы можете увидеть предупреждение о том, что банка из пути сборки не будет доступна на сервере. Щелкните правой кнопкой мыши на этом предупреждении, выберите «Быстрое исправление», а затем «Копировать ...».

NB: Вам не нужен путь к классам. Если что-то отсутствует в пути к классам, ваше приложение не будет компилироваться и не будет запускаться вообще - локально или иначе.

+0

Я уже добавил все необходимые библиотеки в эту папку – Artem

0

ClassDefNotFound возникает, когда класс не может быть найден или загружен - в ваших обстоятельствах вероятность того, что некоторая статическая инициализация этого класса или класса, от которого он зависит, не работает.

Посмотрите на класс, фактически вызывающий исключение для любых статических полей или блоков - один из них, вероятно, не работает из-за среды песочницы.

Полная трассировка стека должна показывать, какая строка вызывает исключение. Если бы я должен был догадаться, этот класс использует фабрику или менеджер для доступа к файловой системе или открытия сокета или чего-то с аналогичными ограничениями.

+0

Правильно) Класс AdWordsServices имеет статический инжектор, который использует библиотеку Guice, если в Guice есть какие-то проблемы, в которых он вызывает исключение в AdWordsServices ... Но ... КАК РЕШАТЬ IT. Я добавил все необходимые последние библиотеки ... Он работает локально, но не на сервере. Эта проблема на самом деле решена изменениями зависимостей maven ... Я не использую проект maven и не знаю, как писать зависимости для решения этой проблемы – Artem

+0

Я добавил полную трассировку стека к моему сообщению – Artem

Смежные вопросы