使用Websphere 8.5.5.9启动我的应用程序时出现以下错误
W com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl scanJAR unable to open input stream for resource org/hibernate/proxy/pojo/javassist/JavassistProxyFactory$2.class in archive WEB-INF/lib/hibernate-core-5.1.0.Final.jar
java.lang.RuntimeException
at org.objectweb.asm.MethodVisitor.visitParameter(Unknown Source)
at org.objectweb.asm.ClassReader.b(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
W com.ibm.ws.ecs.internal.scan.context.impl.ScannerContextImpl scanJAR unable to open input stream for resource org/hibernate/bytecode/enhance/spi/Enhancer$1.class in archive WEB-INF/lib/hibernate-core-5.1.0.Final.jar
java.lang.RuntimeException
at org.objectweb.asm.MethodVisitor.visitParameter(Unknown Source)
at org.objectweb.asm.ClassReader.b(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.ibm.ws.ecs.internal.scan.impl.ClassScanner.scanInputStream(ClassScanner.java:149)
设置为服务器jdk的Java版本为1.8
答案 0 :(得分:1)
这是PI60902中已解决的已知问题。尽管您对问题的描述不完全匹配,但是ifix应该可以解决问题。 ifix包含在8.5.5.11中。
WAS在8.5.5.9中添加了JDK 8,并且还添加了一个新的ASM 5库,该库支持读取Java 8类。但是,直到8.5.5.11,WAS才更新其ASM API调用以包括Opcodes.ASM5设置。这意味着,在升级到8.5.5.11之前,您不能在应用程序中包括Java-8编译的类。
但是,您所显示的异常是抱怨归档文件WEB-INF / lib / hibernate-core-5.1.0.Final.jar中的JavassistProxyFactory $ 2.class。 它不是用Java 8编译的。所以这不完全是问题。
问题似乎是ASM 5库不完全向后兼容。请参阅visitParameter方法:
public void visitParameter(String name, int access) {
if (api < Opcodes.ASM5) {
throw new RuntimeException();
}
if (mv != null) {
mv.visitParameter(name, access);
}
}
因此,如果您遇到了该代码,则在您的应用程序中是否有Java-8编译的类都没关系。
在PI60902(包含在WAS 8.5.5.11中)之前,WAS使用了“ Opcodes.ASM4”设置。因此,此问题可能在8.5.5.9或8.5.5.10中发生。 PI60902将该设置升级为使用“ Opcodes.ASM5”。这样,ASM可以读取Java 8类,还可以避免上面显示的MethodVisitor.visitParameter(...)方法中的RuntimeException。