AspectJ 1.8.8及更高版本-noverify无法正常工作(java 8 VerfiyError)

时间:2017-03-26 12:16:49

标签: java aspectj

我尝试使用带有java 8的aspectj 1.8.9加载struts 2应用程序,但由于Stackmap验证错误导致编织失败 - 从AspectJ 1.8.7升级到1.8.8 / 1.8.9时, - noverify 标志停止工作,我在下面得到了例外情况:

SEVERE:com / opensymphony / xwork2 / config / impl / AbstractMatcher org.aspectj.weaver.BCException:无法找到用于生成堆栈图的Asm(寻找' aj.org.objectweb.asm.ClassReader')。需要使用编织代码生成Stackmap,以避免在Java 1.7或更高版本运行时上验证错误 当编织类型com.opensymphony.xwork2.config.impl.AbstractMatcher时 编织课时 编织的时候 在org.aspectj.weaver.bcel.LazyClassGen.getJavaClassBytesIncludingReweavable(LazyClassGen.java:703)

如何解决这个问题?我尝试使用-verfiy,但它不再起作用了。

更新

NullPointerException中的

org.aspectj.weaver.bcel.asm.StackMapAdder.getCommonSuperClass()会导致上述错误。

为避免NullPointerException我对课程进行了以下更改:

protected String getCommonSuperClass(final String type1, final String type2) {
        ResolvedType resolvedType1 = world.resolve(UnresolvedType.forName(type1.replace('/', '.')));
        ResolvedType resolvedType2 = world.resolve(UnresolvedType.forName(type2.replace('/', '.')));

        if (resolvedType1.isAssignableFrom(resolvedType2)) {
            return type1;
        }

        if (resolvedType2.isAssignableFrom(resolvedType1)) {
            return type2;
        }

        if (resolvedType1.isInterface() || resolvedType2.isInterface()) {
            return "java/lang/Object";
        } else {
            do {
                resolvedType1 = resolvedType1.getSuperclass();

                // ************* My start fix *****************
                if (resolvedType1 == null){
                    return "java/lang/Object";
                }
                // ************* My end fix *******************

                if (resolvedType1.isParameterizedOrGenericType()) {
                    resolvedType1 = resolvedType1.getRawType();
                }
            } while (!resolvedType1.isAssignableFrom(resolvedType2));
            return resolvedType1.getRawName().replace('.', '/');
        }
    }

它修复了错误但我无法判断是否存在任何其他副作用。

请参阅 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=514062(这是完全相同的问题)

0 个答案:

没有答案