记一次jar包冲突导致的NoSuchMethodError
记一次jar包冲突导致的 NoSuchMethodError
对接 webService
的时候,项目本身一直是用动态调用的,但是有部分代码出于技术原因使用的是生成的代码调用,然后引入了一个新的jar包
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
运行新的代码没有问题,运行原有的动态调用的代码,就开始报错了。
java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;
一般 NoSuchMethodError
通常就是 jar 包冲突了,我们搜索 javax.wsdl.xml.WSDLReader
,发现果然有两个
我们继续查找一下我们需要调用的方法 readWSDL
在哪一个类里面。发现是新导入的包里面没有这个方法,然后我们把新导入的包里面这个jar包剔除掉
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
<exclusions>
<exclusion>
<artifactId>axis-wsdl4j</artifactId>
<groupId>axis</groupId>
</exclusion>
</exclusions>
</dependency>
再启动一下,两个都能正常运行啦