之前使用的log4j框架做日志实现, 这两天项目要求切换成slf4j+log4j2。 问题就随之而来。。。。。。。。。。。。。
代码编译报错如下:
[ERROR] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Exception: java.lang.ArrayIndexOutOfBoundsException: 19
[ERROR] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Invalid class file META-INF/versions/9/module-info.class (java.lang.ArrayIndexOutOfBoundsException: 19)
[ERROR] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class=org.apache.logging.log4j.util.StackLocator, META-INF/versions/9/org/apache/logging/log4j/util/internal/DefaultObjectInputFilter.class=org.apache.logging.log4j.util.internal.DefaultObjectInputFilter, META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class=org.apache.logging.log4j.util.ProcessIdUtil}
[ERROR] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/logging/log4j/core/util/SystemClock.class=org.apache.logging.log4j.core.util.SystemClock}
[ERROR] Error(s) found in bundle configuration
乍一看,明显是多版本jar导致的问题,但按理来说我这里使用的jdk1.8也是没问题的。
差不多两个小时,苦思无果。
最后发现是 <maven-bundle-plugin.version>3.3.0</maven-bundle-plugin.version> 版本问题,3.5.0版本支持。
即只会报wran,而不会导致使用jdk1.8时无法编译通过。如下
[WARNING] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/logging/log4j/core/util/SystemClock.class=org.apache.logging.log4j.core.util.SystemClock}
[WARNING] Bundle com.demo:cpa-bundle:bundle:0.0.1-SNAPSHOT : Classes found in the wrong directory: {META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class=org.apache.logging.log4j.util.StackLocator, META-INF/versions/9/module-info.class=module-info, META-INF/versions/9/org/apache/logging/log4j/util/internal/DefaultObjectInputFilter.class=org.apache.logging.log4j.util.internal.DefaultObjectInputFilter, META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class=org.apache.logging.log4j.util.ProcessIdUtil}
每次版本的更新真的是。。。。。。。。。。。同步很重要