gpt4 book ai didi

java - asm.ObjectWriter.getCommonSuperClass 处的 ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 03:42:17 25 4
gpt4 key购买 nike

我正在尝试使用 asm 库来检测 Apache Commons Math,对于某些类,当我尝试使用 ClassWriter 将其写入文件时,会抛出 ClassNotFoundException

抛出错误的一个类是org/apache/commons/math3/linear/RealVector.class

堆栈跟踪是:

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.commons.math3.linear.Array2DRowRealMatrix
at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
at org.objectweb.asm.ClassWriter.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
at org.objectweb.asm.tree.ClassNode.accept(Unknown Source)

我在 google 上搜索了该异常,我所能找到的只是与一些 cobertura 问题或其他没有帮助的无关库有关。

如果我根本不执行任何检测,这种情况也会发生。我还尝试将缺少的类显式添加到类路径中,但这也不起作用。

有什么想法吗?

最佳答案

问题是您环境中的 ASM 是从引导类加载器加载的,而 math3 类是从另一个类加载器加载的。当 ClassWriter 调用“getCommonSuperClass”时,它会调用“GetClass().GetClassLoader()”,这将为他提供引导类加载器。但是,它正在尝试合并 RealVector(已加载)和 Array2DRowRealMatrix 的框架,而使用引导类加载器无法找到后者。

一种解决方案是,如果您自己调用 ClassWriter - 删除告诉编写器计算帧的标志。

另一个解决方案是尝试从系统加载程序加载 ASM。

关于java - asm.ObjectWriter.getCommonSuperClass 处的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com