axis报错Could not initialize class org.apache.axis.client.AxisClient解决办法

axis的discovery在排除commons-logging之后重新引入不要引1.2版本,尝试使用1.0版本

近来接手一个接口平移任务,把旧的接口平移至新平台中。

旧的接口使用了axis作为webservice工具,版本为1.4,在jar包中的META-INFO文件中可见

随后一切照步骤来,引入依赖,注意在discovery的jar中排除了commons-logging的依赖,因为其自动引入的commons-logging会引起冲突,这也是网上大部分解决方案,

排除,并重新引入commons-logging

<dependency>

    <groupId>org.apache.axis</groupId>

    <artifactId>axis</artifactId>

    <version>1.4</version>

</dependency>

<dependency>

    <groupId>wsdl4j</groupId>

    <artifactId>wsdl4j</artifactId>

    <version>1.6.3</version>

</dependency>

<dependency>

    <groupId>javax.xml.rpc</groupId>

    <artifactId>javax.xml.rpc-api</artifactId>

    <version>1.1.2</version>

</dependency>

<dependency>

    <groupId>commons-discovery</groupId>

    <artifactId>commons-discovery</artifactId>

    <version>0.5</version>

    <exclusions>

        <exclusion>

            <groupId>commons-logging</groupId>

            <artifactId>commons-logging</artifactId>

        </exclusion>

    </exclusions>

</dependency>

 

在上面依赖的基础上,再加上

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

到此,网络上的大多解决方案就完成的,但是我启动依旧报错,错误也没变,no such method,无法初始化之类的,就在这行开始执行,也就是axis开始初始化的时候

Call call = (Call) service.createCall();

随后我开始思考,commons-logging 1.2的依赖我不引入也可以在项目依赖目录下看到commons-logging1.2的jar包,这很可能是别的jar也依赖了commons-logging,并且做了排除,然后自动引入某个版本的commons-logging,即1.2版本,也就是说,我的commons-logging的依赖是存在的,就是1.2版本,但axis仍无法初始化

于是我开始排查

1 核对axis版本

2 验证jar是否引入齐全

3 确定commons-discovery中的commons-logging正确排除,写法无误

编译无问题,但是到上面那行代码依旧报错,接口无法走通。最后,我开始怀疑axis1.4是否依赖commons-logging1.2,于是尝试将commons-logging改为1.0重新引入,然后,接口直接通了

几乎所有网络方案给的都是commons-logging1.2对应axis1.4,思路没有错,是jar冲突,只是版本不太对。如果你也在处理类似的问题,希望这篇博客可以给你一点帮助

 

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值