- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正试图找出这个错误,因为几个小时以来我真的不知道是什么原因导致的。我正在尝试将代码注入(inject)到类文件中。奇怪的是,注入(inject)对于 ClassWriter.COMPUTE_MAXS 工作正常,但如果我使用 ClassWriter.COMPUTE_FRAMES,则会抛出 ArrayIndexOutOfBoundsException。我需要使用 COMPUTE_FRAMES 才能运行编辑后的类。我正在使用 asm 5.2,到目前为止只发现 COMPUTE_FRAMES 的值为 2(也许这对您有帮助)
我的代码:
InputStream in = new FileInputStream("Paht/To/Class.class");
ClassReader classReader = new ClassReader(in);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES){
@Override
protected String getCommonSuperClass(final String type1, final String type2){
return "java/lang/Object";
}
};
ClassVisitor mcw = new ModifierClassWriter(Opcodes.ASM5, cw);
classReader.accept(mcw, 0);
File outputDir = new File("Path/To/Output/dir");
outputDir.mkdirs();
DataOutputStream dout = new DataOutputStream(new FileOutputStream(new File(outputDir, "NameOfFile.class")));
dout.write(cw.toByteArray());
dout.close();
修饰符方法编写器:
public static class ModifierMethodWriter extends MethodVisitor{
private String methodName;
public ModifierMethodWriter(int api, MethodVisitor mv, String methodName) {
super(api, mv);
this.methodName = methodName;
}
@Override
public void visitCode() {
super.visitCode();
//InjectCodeHere, removed it because it most likely doesnt cause the error
}
}
修改器类编写器:
public static class ModifierClassWriter extends ClassVisitor{
private int api;
public ModifierClassWriter(int api, ClassWriter cv) {
super(api, cv);
this.api = api;
}
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
ModifierMethodWriter mvw = new ModifierMethodWriter(api, mv, name);
return mvw;
}
}
错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
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.MethodVisitor.visitMaxs(Unknown Source)
at org.objectweb.asm.ClassReader.a(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 package.main.ClassMaker.main(ClassMaker.java:28)
最佳答案
感谢@display-name,我发现了错误。
super.visitMaxs(4, 2);
在“ModifierMethodWriter”中导致了错误,我实际上没有在此处显示代码。
关于java - ASM 5.2 ClassReader.accept 抛出 ArrayIndexOutOfBoundsException :2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43369312/
我正在 eclipse 中使用 Tomcat 7.0 + Maven + Java EE + JDK 10.0.2 创建 api Rest,并收到此错误: 错误: HTTP Status 500 -
我正在使用Asm访问java字节码来获取方法信息。看来ClassReader类的accept方法是异步调用的,所以不可能立即获取方法信息。我该怎么办? 最佳答案 实际上,accept 方法是从您自己的
我尝试从匿名类构建 ASM ClassReader,但失败了。 匿名类的创建者: Class cls = Unsafe.defineAnonymousClass(Hoster, by
这个问题在这里已经有了答案: Failed to load ApplicationContext caused by ArrayIndexOutOfBoundsException in ClassR
我通过输入一个类的路径(比方说“C:\Temp\Test.class”)。我想做的是为这个类初始化一个 ClassReader 并使用 ClassAdapter 开始检测它, ClassWriter(
当我运行 junit 测试类时出现以下异常?我该如何解决这个问题? Failed to load ApplicationContext java.lang.IllegalStateException:
我现在正试图找出这个错误,因为几个小时以来我真的不知道是什么原因导致的。我正在尝试将代码注入(inject)到类文件中。奇怪的是,注入(inject)对于 ClassWriter.COMPUTE_MA
我的 Web 应用程序在 JDK 1.7 上运行良好,但在 1.8 上崩溃,出现以下异常(在使用 Jetty 8 启动应用程序服务器期间)。我使用的是 Spring 版本:3.2.5.RELEASE。
我正在尝试将 Spark 2.3.1 与 Java 结合使用。 我遵循示例 in the documentation但在调用 .fit(trainingData) 时不断收到描述不佳的异常。 Exce
任何人都可以指导我在尝试执行 java spring 程序时遇到下面提到的错误的可能原因。错误如下... Aug 20, 2014 4:43:54 PM org.apache.catalina.cor
当我运行 runNodes 任务来启动 Corda 3 中的节点时,出现以下异常: WARNING: An illegal reflective access operation has occurr
当我尝试部署我的项目时,出现此错误: Sep 01, 2014 11:34:27 PM org.apache.catalina.startup.HostConfig deployDescriptor
我正在通过链接中的相同示例开发 Spring MVC JQGrid 示例:https://github.com/nurkiewicz/books .当我部署此代码时,我看到出现以下错误。 供引用的错误
我是 Spring 的新手,我需要获得一个项目,以便在 JDK7 上使用 Eclipse 成功运行。该项目之前运行在 JDK6 上。 我拥有属于原始项目的所有源文件和 jar。但是当我尝试运行它时,出
我从 https://dev.mysql.com/downloads/connector/j/ 下载了最新的 MySQL 连接器 mysql-connector-java-5.1.37.zip . T
每当我尝试收集rdd时,我都开始出现以下错误。我安装Java 10.1后发生了这种情况,所以我当然把它取出并重新安装了,同样的错误。然后我安装了Java 9.04同样的错误。然后,我删除了python
(原帖)将 hibernate 依赖项添加到 pom.xml 时显示错误 2011-10-11 10:36:53.710::WARN: failed guiceFilter java.lang.No
我使用 Jersey 1.2 通过 JDK1.5 构建 RESTful 服务 当我测试 REST 服务时,出现以下异常。 java.lang.ArrayIndexOutOfBoundsExceptio
我已经通过 java-annotations 编写了一个自定义的 maven 插件,当通过 jdk8 和 maven 3.5.0 运行“mvn clean install”时,出现以下错误: [ERR
我收到以下错误 **ASM ClassReader 无法解析类文件 - 可能是由于尚不支持的新 Java 类文件版本 ** 我正在使用 JDK 1.8 和 Apache 7 并使用 Spring 3.
我是一名优秀的程序员,十分优秀!