尝试添加行以创建映射时,Javassist无法编译异常

尝试添加行以创建映射时,Javassist无法编译异常,java,instrumentation,javassist,Java,Instrumentation,Javassist,嗯,尝试使用一种方法来完成以下任务。 任务-创建映射并向映射中插入值 添加System.out.println行不会导致任何异常。但是当我添加创建地图的行时,由于缺少一个,它抛出了一个cannotCompileException。当我打印最后一个字符串时,它似乎没有遗漏任何内容。我做错了什么 public void createInsertAt(CtMethod method, int lineNo, Map<String,String> parameterMap)

嗯,尝试使用一种方法来完成以下任务。 任务-创建映射并向映射中插入值 添加System.out.println行不会导致任何异常。但是当我添加创建地图的行时,由于缺少一个,它抛出了一个cannotCompileException。当我打印最后一个字符串时,它似乎没有遗漏任何内容。我做错了什么

public void createInsertAt(CtMethod method, int lineNo, Map<String,String> parameterMap)
            throws CannotCompileException {
        StringBuilder atBuilder = new StringBuilder();
        atBuilder.append("System.out.println(\"" + method.getName() + " is running\");");
        atBuilder.append("java.util.Map<String,String> arbitraryMap = new java.util.HashMap<String,String>();");

        for (Map.Entry<String,String> entry : parameterMap.entrySet()) {
        }
        System.out.println(atBuilder.toString());
        method.insertAt(1, atBuilder.toString());
    }

(有没有办法调试此类问题。)请提供一些帮助

Javassist的编译器不支持泛型。删除或注释它们:

.append("java.util.Map arbitraryMap = new java.util.HashMap();")

.append(“java.util.Map/**/arbirymap=new java.util.HashMap/**/();”)
后者只对您自己有用,当然,它对Javassist没有特殊意义

.append("java.util.Map arbitraryMap = new java.util.HashMap();")
.append("java.util.Map/*<String,String>*/ arbitraryMap = new java.util.HashMap/*<String,String>*/();")