`

ClassMetadataReadingVisitor has interface ClassVisitor as super class 问题解决

 
阅读更多
项目POM 文件加入一个包后build没问题,Tomcat启动失败,后台报错如下。

Failed to read candidate component class ....
IncompatibleClassChangeError: class ClassMetadataReadingVisitor has interface ClassVisitor as super class

问题原因参见文章: http://www.cnblogs.com/taven/archive/2013/04/02/2994998.html
简言之就是 spring 的 类 ClassMetadataReadingVisitor 继承了 ClassVisitor 抽象类,但是在spring-asm 包中有个同名的 ClassVisitor 接口。

问题解决:mvn dependency:tree 查看包依赖

[INFO] \- org.apache.cxf:cxf-bundle:jar:2.7.11:compile
[INFO]    +- org.apache.velocity:velocity:jar:1.7:compile
[INFO]    +- wsdl4j:wsdl4j:jar:1.6.3:compile
[INFO]    +- com.sun.xml.bind:jaxb-xjc:jar:2.1.13:compile
[INFO]    +- com.sun.xml.bind:jaxb-impl:jar:2.1.13:compile
[INFO]    +- org.apache.ws.xmlschema:xmlschema-core:jar:2.1.0:compile
[INFO]    +- antlr:antlr:jar:2.7.7:compile
[INFO]    +- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile
[INFO]    +- xml-resolver:xml-resolver:jar:1.2:compile
[INFO]    +- org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:jar:1.1:compile
[INFO]    +- org.codehaus.woodstox:woodstox-core-asl:jar:4.2.1:compile
[INFO]    +- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile
[INFO]    +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.7.1:compile
[INFO]    +- org.eclipse.jetty:jetty-server:jar:8.1.14.v20131031:compile
[INFO]    +- org.eclipse.jetty:jetty-continuation:jar:8.1.14.v20131031:compile
[INFO]    +- org.eclipse.jetty:jetty-http:jar:8.1.14.v20131031:compile
[INFO]    +- org.eclipse.jetty:jetty-io:jar:8.1.14.v20131031:compile
[INFO]    +- org.eclipse.jetty:jetty-util:jar:8.1.14.v20131031:compile
[INFO]    +- org.eclipse.jetty:jetty-security:jar:8.1.14.v20131031:compile
[INFO]    +- org.apache.geronimo.specs:geronimo-servlet_3.0_spec:jar:1.0:compile
[INFO]    +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile
[INFO]    +- org.springframework:spring-jms:jar:3.0.7.RELEASE:compile
[INFO]    +- aopalliance:aopalliance:jar:1.0:compile
[INFO]    +- org.springframework:spring-asm:jar:3.0.7.RELEASE:compile
[INFO]    +- org.apache.httpcomponents:httpcore-nio:jar:4.2.4:compile
[INFO]    +- org.apache.httpcomponents:httpcore:jar:4.2.4:compile
[INFO]    +- org.apache.httpcomponents:httpasyncclient:jar:4.0-beta3:compile
[INFO]    +- org.apache.httpcomponents:httpclient:jar:4.2.5:compile
[INFO]    +- commons-codec:commons-codec:jar:1.9:compile
[INFO]    +- org.apache.mina:mina-core:jar:2.0.7:compile
[INFO]    +- rhino:js:jar:1.7R2:compile
[INFO]    +- javax.ws.rs:javax.ws.rs-api:jar:2.0-m10:compile
[INFO]    +- net.oauth.core:oauth-provider:jar:20100527:compile
[INFO]    +- net.oauth.core:oauth:jar:20100527:compile
[INFO]    +- net.sf.ehcache:ehcache-core:jar:2.5.1:compile
[INFO]    +- org.apache.ws.security:wss4j:jar:1.6.15:compile
[INFO]    +- org.apache.santuario:xmlsec:jar:1.5.6:compile
[INFO]    +- org.opensaml:opensaml:jar:2.6.1:compile
[INFO]    +- org.opensaml:openws:jar:1.5.1:compile
[INFO]    +- org.opensaml:xmltooling:jar:1.4.1:compile
[INFO]    +- joda-time:joda-time:jar:2.2:compile
[INFO]    +- xalan:serializer:jar:2.7.1:runtime
[INFO]    \- org.apache.neethi:neethi:jar:3.0.3:compile

可以看到对spring-asm.jar 的依赖,下面排除该依赖,重新部署, 成功运行。 over
        <dependency>
          <groupId>org.apache.cxf</groupId>
          <artifactId>cxf-bundle</artifactId>
          <version>2.7.11</version>
          <exclusions>
          <exclusion>
             <groupId>org.springframework</groupId> 
             <artifactId>spring-asm</artifactId> 
          </exclusion>

          <exclusion>
             <groupId>org.springframework</groupId> 
             <artifactId>spring-jms</artifactId> 
          </exclusion>
          </exclusions>
        </dependency>

分享到:
评论

相关推荐

    asm5.0.jar

    2013-08-12 14:33:37.672:... Add CGLIB to your classpath.:java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class

    ASM源码学习之ClassReader、ClassVisitor与ClassWriter详解

    4. **ClassWriter**:它实现了ClassVisitor接口,用于构建新的字节码。当你需要生成或修改字节码时,可以使用ClassWriter将处理后的结果输出为字节码形式。 5. **AnnotationWriter**、**FieldWriter** 和 **...

    深入字节码 -- ASM 关键接口 ClassVisitor1

    在ASM 4.0版本中,ClassVisitor由原来的接口改为了抽象类,并且与ClassAdapter合并,用于处理类的访问和修改。 ASM在解析`.class`文件时,按照类、注解、字段、方法、以及方法内部的注解等结构进行遍历,并使用相应...

    06 - ASM之ClassVisitor - 简书1

    `ClassReader`、`ClassVisitor`和`ClassWriter`是ASM Core API中的三大关键类。 `ClassReader`负责读取已有的 `.class` 文件,解析其内部结构,而`ClassWriter`则负责将修改后的类信息写回。`ClassVisitor`作为它们...

    07 - ASM之ClassWriter - 简书1

    `ClassWriter`是基于`ClassVisitor`接口实现的,因此它包含了对类的各种元数据进行访问和处理的方法。 `ClassWriter`类中包含了一些关键字段,这些字段对应于Java类文件结构中的各个部分: 1. `version`: 这个字段...

    ASM操作字节码,动态生成Java类class文件

    2. **ClassReader**: 这个类用于读取已有的字节码,并且可以通过事件回调机制(如ClassVisitor)来分析字节码。 3. **MethodVisitor**: 这是用来访问和修改方法的接口,包括方法的访问标志、返回类型、参数类型、...

    08 - ASM使用ClassWrite生成接口 - 简书1

    当我们创建一个`ClassWriter`实例时,其实就是在创建一个`ClassVisitor`的实现。 2. `ClassWriter.COMPUTE_FRAMES`: 这是一个常量,表示让ASM自动计算并插入堆栈映射帧(Stack Map Frames)。这对于JVM的动态类型...

    深入探索 Java 热部署

    OSGI(Open Service Gateway Initiative)框架提供了一种模块化的解决方案,允许模块独立重启,但若模块间有依赖,仍可能导致短暂的功能中断。针对这一问题,本文聚焦于实现对单一类的热部署,即在不破坏 JVM 原有...

    asm-analysis-3.2.jar

    在这个包里,你可以找到一些重要的类,如ClassReader、ClassVisitor和ClassWriter等,它们都是ASM库的核心API。 除此之外,ASM库也提供了一些其他的功能。例如,它可以生成二进制的class文件,也可以在类被加载入...

    asm-3.3.1.jar

    asm-3.3.1.jar是一个Java字节码操纵框架,它可以在二进制形式下动态生成stub类或者其他代理类,同时...为了实现这些功能,它定义了一些重要的类,如ClassReader、ClassVisitor和ClassWriter等,这些都位于Core API中。

    asm4-guide.pdf

    5. Generating classes(生成类):此部分详细阐述如何使用ClassWriter或者ClassVisitor来生成新的类。 6. Parsing classes(解析类):说明如何使用ClassReader来解析现有类的字节码。 7. Transforming classes...

    Java ASM,learn-java-asm-main.zip

    3. **类适配器(ClassAdapter)**:ASM 提供了一些预定义的适配器类,如 `ClassAdapter`,它实现了 `ClassVisitor` 接口,并提供了空的方法实现。这样你可以基于这些适配器类进行扩展,只重写你关心的方法。 4. **...

    asm_reborn

    《ASM重生:深入理解Java字节码操作与ASM库应用》 在Java世界里,ASM是一个强大的字节码操控和分析框架,它允许开发者对字节码进行低...理解和掌握ASM,对于提升Java开发者的底层技能和解决问题的能力具有重要意义。

    asm 3.3.1 jar

    `ClassWriter`接收`ClassVisitor`的结果并生成新的字节码。 在ASM 3.3.1中,修复了一些已知的问题,提升了API的稳定性和兼容性。尽管现在ASM已经更新到了更高级别的版本,但3.3.1仍然在许多项目中被广泛使用,尤其...

    java-asm:java asm原始解析

    3. **ClassWriter**: `ClassWriter`是`ClassVisitor`的一个实现,负责生成字节码。当你修改类的信息后,`ClassWriter`会生成新的字节码序列,然后可以被写入到.class文件中。 4. **MethodVisitor**: 类似于`...

    asm4.0_RC1-bin

    1. **初始化ClassWriter**:ASM通过ClassWriter类来生成字节码,开发者需要配置ClassWriter以指定输出的类信息。 2. **创建ClassVisitor**:ClassVisitor是ASM的核心接口,它定义了一系列访问类结构的方法。开发者...

    02 - ASM组成部分 - 简书1

    2. **ClassWriter**:这个类继承自ClassVisitor,它负责将处理过的类信息写入到新的字节码中。通过调用visit方法,你可以构建出一个新的类结构。 3. **ClassReader**:这个类用于读取已存在的.class文件,它可以...

    Android字节码插桩

    2. **创建ClassVisitor**:根据需求创建一个自定义的`ClassVisitor`,用于接收`ClassReader`读取的字节码信息。 3. **修改字节码**:在`ClassVisitor`中,开发者可以重写方法,对字节码进行修改,比如插入新的方法...

    ASM中文帮助文档

    - **ClassWriter**:生成字节码的工具,通过接收ClassVisitor并转换为字节数组。 - **ClassReader**:读取并解析类文件,提供给ClassVisitor访问其结构。 4. **学习资源** "ASM4使用指南.pdf"很可能是ASM的详细...

    sot:简单的着色器(是泛音)测试

    索特 最简单的独立泛音和着色器... 目前,lein 2.4.3 和 clj-native 0.9.5 发布后,导致: java.lang.IncompatibleClassChangeError: Found class clojure.asm.ClassVisitor, but interface was expected 但是“泛音”

Global site tag (gtag.js) - Google Analytics