阅读 176

Srping Boot项目引入第三方jar包,报错NoClassDefFoundError

在POM文件中引入第三方jar包

我目前所知的有两种方式可以引入:

1.从本地引入

我的jar包在src/lib下,那么pom文件中引入形式:

1.1

<dependency>
    <groupId>CNCBCryptoPkg</groupId>
    <artifactId>CNCBCryptoPkg</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/src/lib/CNCBCryptoPkg-1.0.jar</systemPath>
</dependency>复制代码

如果是在项目根目录下,则systemPath标签为:

<systemPath>${project.basedir}/src/lib/CNCBCryptoPkg-1.0.jar</systemPath>复制代码

1.2 在pom文件的build标签中添加以下:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>复制代码

关键代码:

<configuration>
    <includeSystemScope>true</includeSystemScope>
</configuration>复制代码

上面的dependency标签中各属性都不能缺少,如果没有version可以改变jar自设一个version,比如上面的jar原本为:CNCBCryptoPkg.jar,改名CNCBCryptoPkg-1.0.jar并将version设置为1.0;网上有些作者说可以随便设置,但是打包后jar包名称是根据这里的dependency标签来生成的,不确定是否有影响,但建议设置为一致

2.将第三方jar包加入到maven本地仓库,然后引入

执行mvn命令:

mvn install:install-file -Dfile=D:\projects\xxx\xxx\src\lib\CNCBCryptoPkg-1.0.jar -DgroupId=CNCBCryptoPkg -DartifactId=CNCBCryptoPkg -Dpackaging=jar -Dversion=1.0复制代码

成功后即可安装常规的mvn依赖引入,eg:

<dependency>
    <groupId>CNCBCryptoPkg</groupId>
    <artifactId>CNCBCryptoPkg</artifactId>
    <version>1.0</version>
</dependency>复制代码

build标签中的也不需要额外添加

<configuration>
    <includeSystemScope>true</includeSystemScope>
</configuration>复制代码

其实我所遇到的问题上述并没有解决,是因为我所引入的jar包还依赖的其他的第三方jar,要使用的class与另外的jar包中的class同名且路径相同,所以打包编译都不报错(我们可以自己试试,在多module项目中建同包名路径的类,引用时候也会出现NoClassFound的错误,具体原因未深究),所以我将缺少的jar按上述方式引入进项目即可正常运行


作者:猪皮恶霸jyfc
链接:https://juejin.cn/post/7023659228208300069


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐