【异常解决】Handler dispatch faile:nested exception isjava.lang.NoClassDefFoundError:/aspose/words/License

一、背景描述

公司最近开发一个功能,将上传的docx,doc文件转换成pdf并添加水印并用流的形式下载下来,我使用aspose-words的jar包,在本地windos环境测试功能没有问题,但是放到linux中找不到jar包,调用下载接口时,word转换pdf接口异常错误。

二、报错分析

经过排查发现,手动添加的lib下aspose-words这个jar包并没有打到maven中央仓库上去,所以在部署jenkins的时候执行mvn打包功能,并没有将业务模块中lib下手动添加的jar包与maven仓库中的jar打在一起

 三、解决问题的方案

最终排查发现在使用Maven的时候,如果我们要依赖一个本地的jar包的时候,通常都会使用<scope>system</scope><systemPath></systemPath>来处理。

例如:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>15.8.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/aspose-words-18.6-jdk16-crack.jar</systemPath>
</dependency>

如果你仅仅是这么做了,在你使用SpringBoot打包插件生成jar包的时候,你会发现这个jar包不会被打进去,进而出现错误。
这个就需要在maven插接中配置一个includeSystemScope属性:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <!--设置为true,以便把本地的system的jar也包括进来-->
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

在Maven设置完includeSystemScope后,重新打包编译后,接口正常调用没有报错信息了。

四、总结

通过这次开发需求踩坑后对Maven的理解又深刻了一点,长路慢慢各种各样的需求只有在遇到了才会留下深刻印象。具体的了解有兴趣的小伙伴可以自行了解Maven相关的资料,来了解它每个标签值是干嘛用的。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值