在WLS 12中部署应用程序时发生java.lang.ArrayIndexOutOfBoundsException

在WLS 12中部署应用程序时发生java.lang.ArrayIndexOutOfBoundsException,java,weblogic,Java,Weblogic,在Weblogic中部署应用程序时出现此错误 <Oct 3, 2013 12:18:00 PM IST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application "MyApp" due to error java.lang.ArrayIndexOutOfBoundsException: 4818 8 java.lang.ArrayIndexOutOfBo

在Weblogic中部署应用程序时出现此错误

   <Oct 3, 2013 12:18:00 PM IST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application "MyApp" due to error java.lang.ArrayIndexOutOfBoundsException: 4818
8
java.lang.ArrayIndexOutOfBoundsException: 48188
        at com.bea.objectweb.asm.ClassReader.readClass(Unknown Source)
        at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
        at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
        at weblogic.application.utils.annotation.ClassInfoImpl.<init>(ClassInfoImpl.java:45)
        at weblogic.application.utils.annotation.ClassfinderClassInfos.polulateOneClassInfo(ClassfinderClassInfos.java:145)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.ArrayIndexOutOfBoundsException: 48188
        at com.bea.objectweb.asm.ClassReader.readClass(Unknown Source)
        at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
        at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
        at weblogic.application.utils.annotation.ClassInfoImpl.<init>(ClassInfoImpl.java:45)
        at weblogic.application.utils.annotation.ClassfinderClassInfos.polulateOneClassInfo(ClassfinderClassInfos.java:145)
        Truncated. see log file for complete stacktrace
>

我知道这是因为类没有正确加载,但是我如何找到它? 我使用的是Hotspot 1.7,在使用-verbose:class时,我无法找出加载错误的类

下面是启用详细类加载的列表

[Loaded com.bea.objectweb.asm.FieldVisitor from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.MethodVisitor from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.AnnotationVisitor from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.commons.EmptyVisitor from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm.commons_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.ClassReader from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.Attribute from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded com.bea.objectweb.asm.MethodWriter from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded weblogic.servlet.internal.WebAppInternalModuleExtension$PersistenceExtension from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded weblogic.servlet.internal.WebAppInternalModuleExtension$SpringInstrumentationExtension from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded weblogic.cacheprovider.coherence.CoherenceClusterContainer from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded weblogic.servlet.internal.WebAppInternalModuleExtension$CoherenceCacheExtension from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded weblogic.utils.enumerations.FileEnumeration from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded weblogic.utils.classloaders.DirectoryClassFinder$1 from file:/C:/Oracle/Middleware/modules/com.bea.core.utils.classloaders_3.0.0.0.jar]
[Loaded weblogic.utils.enumerations.EmptyFileContainerException from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded weblogic.utils.enumerations.FileEnumeration$NullDirectoryListException from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded weblogic.utils.enumerations.FileContainer from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded weblogic.utils.enumerations.LIFO_FileContainer from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded com.bea.objectweb.asm.Type from file:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded weblogic.application.internal.flow.ModuleStateDriver$DestroyStateChange from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded weblogic.application.utils.ExceptionUtils from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[Loaded javax.management.RuntimeErrorException from C:\Java\JDK\JDK17~1.0_1\jre\lib\rt.jar]
[Loaded com.bea.logging.ThrowableWrapper from file:/C:/Oracle/Middleware/modules/com.bea.core.logging_2.0.0.0.jar]
<Oct 3, 2013 11:51:20 AM IST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application "MyApp" due to error java.lang.ArrayIndexOutOfBoundsException: 48188
java.lang.ArrayIndexOutOfBoundsException: 48188
    at com.bea.objectweb.asm.ClassReader.readClass(Unknown Source)
    at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
    at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
    at weblogic.application.utils.annotation.ClassInfoImpl.<init>(ClassInfoImpl.java:45)
    at weblogic.application.utils.annotation.ClassfinderClassInfos.polulateOneClassInfo(ClassfinderClassInfos.java:145)
    Truncated. see log file for complete stacktrace
Caused By: java.lang.ArrayIndexOutOfBoundsException: 48188
    at com.bea.objectweb.asm.ClassReader.readClass(Unknown Source)
    at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
    at com.bea.objectweb.asm.ClassReader.accept(Unknown Source)
    at weblogic.application.utils.annotation.ClassInfoImpl.<init>(ClassInfoImpl.java:45)
    at weblogic.application.utils.annotation.ClassfinderClassInfos.polulateOneClassInfo(ClassfinderClassInfos.java:145)
    Truncated. see log file for complete stacktrace
[从文件加载com.bea.objectweb.asm.FieldVisitor:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm\u 1.2.0.0\u 3-2-0.jar]
[已从文件加载com.bea.objectweb.asm.MethodVisitor:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[已从文件加载com.bea.objectweb.asm.AnnotationVisitor:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[已从文件中加载com.bea.objectweb.asm.commons.EmptyVisitor:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm.commons_1.2.0.0_3-2-0.jar]
[已从文件中加载com.bea.objectweb.asm.ClassReader:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[已从文件中加载com.bea.objectweb.asm.Attribute:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[已从文件中加载com.bea.objectweb.asm.MethodWriter:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[从文件加载的weblogic.servlet.internal.WebAppInternalModuleExtension$PersistenceExtension:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[从文件中加载的weblogic.servlet.internal.WebAppInternalModuleExtension$SpringInstrumentationExtension:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[已从文件中加载weblogic.cacheprovider.coherence.CoherenceClusterContainer:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[从文件加载的weblogic.servlet.internal.WebAppInternalModuleExtension$coherencecachextension:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[已从文件中加载weblogic.utils.enumerations.FileEnumeration:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[已从文件中加载weblogic.utils.classloaders.DirectoryClassFinder$1:/C:/Oracle/Middleware/modules/com.bea.core.utils.classloaders\u 3.0.0.0.jar]
[Loaded weblogic.utils.enumerations.EmptyFileContainerException from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[Loaded weblogic.utils.enumerations.FileEnumeration$NullDirectoryListException from file:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[已从文件中加载weblogic.utils.enumerations.FileContainer:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[已从文件加载weblogic.utils.enumerations.LIFO_FileContainer:/C:/Oracle/Middleware/modules/com.bea.core.utils_2.0.0.0.jar]
[已从文件中加载com.bea.objectweb.asm.Type:/C:/Oracle/Middleware/modules/com.bea.core.repackaged.asm_1.2.0.0_3-2-0.jar]
[Loaded weblogic.application.internal.flow.ModuleStateDriver$DestroyStateChange from file:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[已从文件中加载weblogic.application.utils.ExceptionUtils:/C:/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.jar]
[从C:\Java\JDK\JDK17~1.0_1\jre\lib\rt.jar加载的javax.management.RuntimeErrorException]
[已从文件中加载com.bea.logging.ThrowableWrapper:/C:/Oracle/Middleware/modules/com.bea.core.logging_2.0.0.0.jar]

基本上,它在部署中是一个坏的类文件。有些图书馆有这些

问题在于weblogic 12c没有捕获异常并记录罪魁祸首,这样就可以找出它是哪一个。我会向甲骨文提出这个问题,这样他们就会这样做

查看他们将消息更改为警告而不阻止部署的位置

关于哪个文件可能有问题的一个提示是,如果应用程序在以前的版本中工作,可能就是因为这个


至于如何找出它是哪个类,您可以将调试连接到weblogic实例,并在java.lang.ArrayIndexOutOfBoundsException上添加一个异常断点,然后尝试检查上下文以找出参数。

对于我来说,它是关于在一个类的
private
方法中使用Java8流lambda的,这个类是Springbean。EclipseIDE中的Weblogic版本-12c,12.1.3)

我猜在Spring3.1中使用Java8创建bean时出现了问题

我有一个
集合
,我需要将它转换为
集合
,为此,我使用了表达式,比如,
strSet.stream().map->Long.parseLong().collector(collector.toSet()),

在部署到服务器时,我开始接收此
java.lang.ArrayIndexOutOfBoundsException

所以,当我将代码更改为迭代
Set
并在解析后添加到
Set
时,错误消失了


这是一个遗留的springmvc3.1应用程序,weblogicserver以jdk8启动,Eclipse没有显示任何错误&eclipseprojectfacet被设置为java1.8

另一个问题是与WebLogic 12c捆绑在一起的Spring版本,我为繁荣添加了它,因为它给我带来了很多麻烦。WebLogic12c与Spring3.x捆绑在一起,它不理解带有lambda表达式的Java8类文件

一个复杂的因素是,它在我的开发机器上的本地WebLogic实例上运行良好,但在Oracle云实例上运行不好

解决方案是告诉WebLogic使用与web应用程序捆绑在一起的Spring版本,方法是在
web-INF
目录中添加
WebLogic.xml
src/main/webapp/web-INF
,如果您使用的是Maven)


org.springframework

这就解决了我的问题。

也有同样的问题。我使用了eclipse中的调试器。这很容易,只是;在Eclipse中搜索ArrayIndexOutofBoundException,然后在所有构造函数中放置一个断点,附加
<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">

    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.springframework</package-name>
            <!--
                Add other packages that you may want to use
                over the ones bundled with WebLogic.
            -->
        </prefer-application-packages>
    </container-descriptor>

</weblogic-web-app>