java.lang.NoClassDefFoundError: io/netty/handler/s

2019-05-29 02:57发布

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.

enter image description here

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)

2条回答
男人必须洒脱
2楼-- · 2019-05-29 03:06

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

查看更多
对你真心纯属浪费
3楼-- · 2019-05-29 03:29

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.

查看更多
登录 后发表回答