【发布时间】:2018-03-02 10:14:40
【问题描述】:
此问题与 Jetty 中的类似问题重复,但我找不到有关 Websphere 的文献
- https://github.com/eclipse/jetty.project/issues/1797
- Error scanning entry "module-info.class" when starting Jetty server
我有一个运行在 Java 7 上的 Websphere 8.5.5.7。直到今天我们才发现将 log4j 从 2.7 升级到 2.10 会破坏启动。以下是众多堆栈跟踪之一:
[01/03/18 10.12.14:154 CET] 000003d9 ecs W com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl scanJAR unable to open input stream for resource module-info.class in archive WEB-INF/lib/log4j-api-2.10.0.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(ClassScanner.java:147)
at com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(ClassScanner.java:124)
at com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(ClassScanner.java:120)
at com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.scanJAR(ScannerContextImpl.java:275)
at com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.scanJARs(ScannerContextImpl.java:315)
at com.ibm.ws.ecs.internal.scan.context.impl.WARScannerContext.scanInternal(WARScannerContext.java:76)
at com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.scan(ScannerContextImpl.java:87)
at com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl.getScannedClasses(ScannerContextImpl.java:70)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.scanForHandlesTypesClasses(WebAppImpl.java:760)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initializeServletContainerInitializers(WebAppImpl.java:601)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:406)
基本上,log4j 开发人员有一个伟大的(但不幸的)想法,即使用 Java 9 的多版本 jar 来适应较旧的 Java 运行时。
我们的安装无法升级。这些是版本,我们必须保留它们。我试图用谷歌搜索带有 websphere 的多版本 jar,但似乎没有文献。
我想问是否有任何配置解决方法至少在目标 websphere 版本中的选定包中禁用对 jar 的大规模扫描。
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为 我发现问题中没有真正的问题:我已确定该异常是一个警告,并且不是真正的启动错误。应用程序不会被阻止启动。