jurmous / etcd4j

Java / Netty client for etcd, the highly-available key value store for shared configuration and service discovery.
Apache License 2.0
267 stars 83 forks source link

Last cause: Could not initialize class mousio.etcd4j.responses.EtcdKeysResponse #138

Closed adprocas closed 7 years ago

adprocas commented 7 years ago

I'm trying this -- I've also tried a number of other things, like getting the version, and get similar errors (NoClassDefFoundError) which seem to come up when trying to access static final variables

        EtcdClient etcd = new EtcdClient("username", "password", new URI("https://my.url.to.etcd:2379"));

        try{
            EtcdKeysResponse response = etcd.get("message").send().get();

            // Prints out: bar
            System.out.println(response.node.value);
        }catch(mousio.etcd4j.responses.EtcdException e){
            // Do something with the exception returned by etcd
        }catch(IOException e){
            // Exception happened in the retrieval. Do something with it.
        }catch(java.util.concurrent.TimeoutException e){
            // Timeout happened. Do something
        }catch(EtcdAuthenticationException e) {

        } finally {
            etcd.close();
        }

I have the following (ivy) dependencies

        <dependency org="org.mousio" name="etcd4j" rev="2.13.0" conf="core->default"/>
        <dependency org="io.netty" name="netty-all" rev="4.1.9.Final" conf="core->default"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="2.8.6"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.8.6"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.8.6"/>
        <dependency org="com.fasterxml.jackson.module" name="jackson-module-afterburner" rev="2.8.6"/>
Last cause: Could not initialize class mousio.etcd4j.responses.EtcdKeysResponse

Root cause:

java.lang.NoClassDefFoundError: Could not initialize class mousio.etcd4j.responses.EtcdKeysResponse
     at mousio.etcd4j.requests.EtcdKeyRequest.<init>(EtcdKeyRequest.java:58)
     at mousio.etcd4j.requests.EtcdKeyGetRequest.<init>(EtcdKeyGetRequest.java:48)
     at mousio.etcd4j.EtcdClient.get(EtcdClient.java:276)
     at my.app.HomePage.<init>(Unknown Source)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
     at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:175)
     at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:67)
     at org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133)
     at org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:268)
     at org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166)
     at org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78)
     at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:279)
     at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
     at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
     at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
     at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
     at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
     at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
     at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
     at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
     at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     at java.lang.Thread.run(Thread.java:745)

This here seems to point to this file and method:

mousio\etcd4j\requests\EtcdKeyRequest.class

super((String)null, clientImpl, method, retryHandler, **EtcdKeysResponse.DECODER**);

lburgazzoli commented 7 years ago

Looks like at runtime you do not have all the dependencies in your classpath, can you check it ? I'm unable to reproduce so it would be nice if you can share a reproducer.

adprocas commented 7 years ago

It was a silly mistake -- I should have had this....

        <dependency org="org.mousio" name="etcd4j" rev="2.13.0" conf="core->default"/>
        <dependency org="io.netty" name="netty-all" rev="4.1.9.Final" conf="core->default"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="2.8.6" conf="core->default"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.8.6" conf="core->default"/>
        <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.8.6" conf="core->default"/>
        <dependency org="com.fasterxml.jackson.module" name="jackson-module-afterburner" rev="2.8.6" conf="core->default"/>
lburgazzoli commented 7 years ago

Great, so it works now ?

adprocas commented 7 years ago

Yes - thanks