7

在 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

关于如何继续进行的任何提示?

谢谢!

4

3 回答 3

8

基本上,它是部署中的错误类文件。一些库有这些。

有什么问题的是 weblogic 12c 没有捕获异常并记录罪魁祸首,因此人们可以找出它是哪一个。我会向 Oracle 提出这个问题,所以他们会这样做。

请参阅Geronimo 中的类似问题,他们将消息更改为警告而不阻止部署。

关于哪个文件可能有问题的提示是,在 12c 中,它们也在加载资源类,而在以前的版本中没有这样做,所以如果应用程序在以前的版本中工作,可能是由于这个原因。

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

于 2013-10-03T07:06:52.380 回答
2

另一个问题是与 WebLogic 12c 捆绑在一起的 Spring 版本,因为它让我很头疼,所以我为了繁荣而添加。WebLogic 12c 与 Spring 3.x 捆绑在一起,它不理解带有 lambda 表达式的 Java 8 类文件。

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

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

<?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>

这为我解决了这个问题。

于 2019-04-01T08:37:28.120 回答
0

private对我来说,这是关于在Spring Bean 类的方法中使用 Java 8 流 lambda 。Eclipse IDE 中的 Weblogic 版本 - 12c 、 12.1.3 )。

我猜想在 Java 8 的 Spring 3.1 中创建 bean 时存在问题。

我有一个,当我使用像这样的表达式时,Set<String>我被要求将它转换为Set<Long>并为此目的strSet.stream().map(s -> Long.parseLong(s)).collect(Collectors.toSet());

java.lang.ArrayIndexOutOfBoundsException我在部署到服务器时开始收到此消息。

因此,当我更改代码以在解析后进行迭代Set<String>和添加时,错误就消失了。Set<Long>

这是一个旧的 Spring MVC 3.1 应用程序,Weblogic Server 从 JDK 8 开始,Eclipse 没有显示任何错误,并且 Eclipse Project Facet 设置为 Java 1.8 。

于 2018-11-13T12:29:38.797 回答