webspherenettypushy

Getting unable to open input stream error when trying to use Netty in IBM WAS server


Am trying to use netty jars, as part of pushy library(https://github.com/relayrides/pushy) to send apple push notifications. It runs fine in my local tomcat. When I try to deploy the same on IBM WAS and start my server, it gives me the below exception.

com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl scanJAR unable to open input stream for resource io/netty/util/internal/shaded/org/jctools/queues/package-info.class in archive WEB-INF/lib/netty-common-4.1.16.Final.jar

Pls find below the versions am using.

WAS - 8.5.5 Java - 1.7 Netty - 4.1.16

Pls help me understand the cause for the issue and how to fix the same. Thanks.


Solution

  • Looking at "netty-common-4.1.16.Final.jar" from

    https://mvnrepository.com/artifact/io.netty/netty-common/4.1.16.Final

    I'm seeing this resource:

    netty-common-4.1.16.Final.jar/io/netty/util/internal/shaded/org/jctools/queues/package-info.class

    That has been compiled using a java8 compiler. That seems incorrect -- none of the other class resources of the JAR are compiled using java8.

    Data (internal reporting format) for "package-info":

    /netty-common-4.1.16.Final.jar/io/netty/util/internal/shaded/org/jctools/queues/package-info.class
        interface synthetic io.netty.util.internal.shaded.org.jctools.queues.package-info
            extends java.lang.Object
            Version [ 0x34 0x00 ] ( J2SE 8 )
    

    The same data, for example, for "Log4JLoggerFactory":

    /netty-common-4.1.16.Final.jar/io/netty/util/internal/logging/Log4JLoggerFactory.class
        public io.netty.util.internal.logging.Log4JLoggerFactory
            extends io.netty.util.internal.logging.InternalLoggerFactory
            Version [ 0x32 0x00 ] ( J2SE 6.0 )
            [F] public static final INSTANCE : [ Lio/netty/util/internal/logging/InternalLoggerFactory; ]
            [M] public deprecated <init> : [ ()V ] ( void )
                @java.lang.Deprecated
            [M] public newInstance : [ (Ljava/lang/String;)Lio/netty/util/internal/logging/InternalLogger; ]
            [M] static <clinit> : [ ()V ] ( void )
    

    Can you try rerunning with that one resource removed? (Or, rebuilt to not use java8?) IBM WebSphere won't process java8 classes unless at a high enough service level (8.5.5.9 and higher). Or, try on a higher service level of WebSphere.