解决Spring-boot 引入系统包导致的java.lang.NoClassDefFoundError

最近在做一个含支付宝支付的项目,架构用的是Spring-boot;支付宝官网提供一个支付SDK jar下载使用,把jar直接拷贝到项目中引用使用。jar包放resources下的jar文件夹

<dependency>
            <groupId>com.alipaygroupId>
            <artifactId>alipay-sdk-javaartifactId>
            <version>3.0.0version>
            <scope>systemscope>
            <systemPath>${project.basedir}/src/main/resources/jar/alipay-sdk-java-3.0.0.jarsystemPath>
        dependency>

项目本地启动好好的,但构建项目jar并启动的时候就有问题了,报一个java.lang.NoClassDefFoundError: com/alipay/api/AlipayApiException错误,这种情况根据经验可以判断我放resources下SDK jar包在maven构建项目jar时被忽略了。

使用WinRar等解压工具查看构建的项目jar【目录路径BOOT-INF/lib】可以查看到支付宝SDK并没有被构建到此文件夹。

解决办法
修改pom.xml,添加resources声明

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
        <resources>
            <resource>
                <directory>src/main/resources/jardirectory>
                <targetPath>BOOT-INF/lib/targetPath>
                <includes>
                    <include>**/*.jarinclude>
                includes>
            resource>
            <resource>
                <directory>src/main/resourcesdirectory>
                <targetPath>BOOT-INF/classes/targetPath>
            resource>
        resources>
    build>

end

推荐文章:
【代码规范神器】阿里巴巴Java开发规约IDE插件
【小项目】Spring boot基于Redis缓存商城分类,商品信息
Java基于Redis实现“附近的人”

你可能感兴趣的:(Spring-boot)