java.lang.NoClassDefFoundError: io/netty/handler/ssl/SslContextBuilder

对着背影说爱祢 提交于 2019-12-10 11:07:04

问题


I am trying to implement relayrides/pushy, but am getting the following runtime error:

Jun 28, 2017 2:06:58 PM com.turo.pushy.apns.SslUtil getSslProvider
INFO: Native SSL provider not available; will use JDK SSL provider.
Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/handler/ssl/SslContextBuilder
  at com.turo.pushy.apns.ApnsClientBuilder.build(ApnsClientBuilder.java:396)
  at com.jobs.spring.service.NotificationServiceImpl.sendIOSPushNotification(NotificationServiceImpl.java:122)

  Caused by: java.lang.ClassNotFoundException: io.netty.handler.ssl.SslContextBuilder

pom.xml

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
    </dependency>
    <!-- Push Notifications -->
    <dependency>
        <groupId>com.turo</groupId>
        <artifactId>pushy</artifactId>
        <version>0.10</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-tcnative</artifactId>
        <version>2.0.5.Final</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler</artifactId>
        <version>4.0.27.Final</version>
    </dependency>
    <dependency>
        <groupId>com.ning</groupId>
        <artifactId>async-http-client</artifactId>
        <version>1.9.40</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.1</version>
    </dependency>

java

    final ApnsClient apnsClient = new ApnsClientBuilder()
            .setClientCredentials(new File(PATH_TO_P12_CERT), CERT_PASSWORD )
            .build();

I am guessing my mvn dependencies are incorrect. Any help appreciated.

UPDATE

I updated my dependencies to:

    <dependency>
        <groupId>com.turo</groupId>
        <artifactId>pushy</artifactId>
        <version>0.10</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.11.Final</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-tcnative</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.6</version>
    </dependency>

But now get:

Jun 28, 2017 2:40:18 PM com.turo.pushy.apns.SslUtil getSslProvider
INFO: Native SSL provider not available; will use JDK SSL provider.
Exception in thread "main" java.lang.NoSuchMethodError: io.netty.bootstrap.Bootstrap.config()Lio/netty/bootstrap/BootstrapConfig;
  at com.turo.pushy.apns.ApnsClient.<init>(ApnsClient.java:172)
  at com.turo.pushy.apns.ApnsClientBuilder.build(ApnsClientBuilder.java:420)
  at com.jobs.spring.service.NotificationServiceImpl.sendIOSPushNotification(NotificationServiceImpl.java:121)

回答1:


seems like you mix netty 4.1 and 4.0. You need to only use 4.1 if you want to use pushy.




回答2:


Did you clean your classpath in between I created a test project containing only the dependency

<dependency>
    <groupId>com.turo</groupId>
    <artifactId>pushy</artifactId>
    <version>0.10</version>
</dependency>

and a simple main class just creating the client with the snipped you are using above and it works out fine

To me it looks like there might be two versions of BootstrapConfig on the classpath. Try to remove all dependencies besides pushy and clean/refreshing the maven dependencies.



来源:https://stackoverflow.com/questions/44802101/java-lang-noclassdeffounderror-io-netty-handler-ssl-sslcontextbuilder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!