IBM Support

PI89708: THE LOG4J-API-2.9.1.JAR CONTAINS CLASSES UNDER THE META-INF DIRECTORY CAUSE AN EXCEPTION DURING STARTUP.

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • The log4j-api-2.9.1.jar contains classes under the
    META-INF directory. These classes cause an exception during
    application start.
    
    
    com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl
    scanJAR unable to open input stream for resource
    META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.
    class in archive WEB-INF/lib/log4j-api-2.9.1.jar
    
    java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(C
    lassScanner.java:147)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(C
    lassScanner.java:124)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(C
    lassScanner.java:120)
    at
    com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.sca
    nJAR(ScannerContextImpl.java:275)
    at
    com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.sca
    nJARs(ScannerContextImpl.java:315)
    at
    com.ibm.ws.ecs.internal.scan.context.impl.WARScannerContext.scan
    Internal(WARScannerContext.java:76)
    at
    com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.sca
    n(ScannerContextImpl.java:87)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.doScan(ClassScann
    er.java:90)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.ensureScan(ClassS
    canner.java:111)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.getAnnotatedPacka
    ges(ClassScanner.java:196)
    at
    com.ibm.ws.ecs.internal.scan.impl.AnnotationScannerImpl$Annotati
    onBucket.getPackageAnnotationTargets(AnnotationScannerImpl.java:
    359)
    at
    com.ibm.ws.ecs.internal.scan.impl.AnnotationScannerImpl.getPacka
    geAnnotationTargets(AnnotationScannerImpl.java:264)
    at
    com.ibm.ws.sip.container.annotation.SipModuleAnnotationProcessor
    .<init>(SipModuleAnnotationProcessor.java:171)
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server with an application containing       *
    *                  log4j-api-2.9.1.jar.                        *
    ****************************************************************
    * PROBLEM DESCRIPTION: An application containing a JAR file    *
    *                      with class files under the META-INF     *
    *                      directory causes                        *
    *                      IllegalArgumentException.               *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The JAR file log4j-api-2.9.1.jar (and later versions of the
    JAR file)contains classes under the META-INF directory. For
    example:
    META-
    INF\versions\9\org\apache\logging\log4j\util\ProcessIdUtil.
    class
    This is new to Java 9. Classes which use Java 9 features are
    placed under META-INF\versions\9 as a way to provide
    backward
    compatibility.
    Since traditional WebSphere Application Server (V7 thru V9)
    does not support Java 9, the application server is not aware
    of
    this location for classes.  The application server assigns
    the
    wrong directory as the root of the Java package.  In this
    example, the Java package directory of the class should be:
    "org\apache\logging\log4j\util", but the
    application server is using the package directory
    "META-INF\versions\9\org\apache\logging\log4j\util".
    When a class under the example directory is scanned for
    annotations, the declared package name in the class
    (org.apache.logging.log4j.util) does not match the
    package directory.  This results in an
    IllegalArgumentException shown in the SystemOut.log file:
    com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl
    scanJAR unable to open input stream for resource
    META-
    INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.
    class in archive WEB-INF/lib/log4j-api-2.9.1.jar
    java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at
    com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStre
    am(C
    lassScanner.java:147)
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    PI89708

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-11-01

  • Closed date

    2017-12-14

  • Last modified date

    2018-05-30

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R850 PSY

       UP

  • R900 PSY

       UP



Document information

More support for: WebSphere Application Server
General

Software version: 900

Reference #: PI89708

Modified date: 30 May 2018