java.lang.NoClassDefFoundError: Caused by: java.lang.ClassNotFoundException: 导入本地jar包 无法找到类问题~

引入最好使用 Maven 仓库中的依赖项,但是有时候就是需要引入自己本地jar包~

首先需要将.jar文件放在位于src/main/resources/lib/目录下

那么在Maven项目的pom.xml文件中,你可以使用以下配置:

<dependencies>
    <dependency>
        <groupId>local</groupId>
        <artifactId>xxx</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/main/resources/lib/名称.jar</systemPath>
    </dependency>
</dependencies>

同步或刷新项目:保存构建工具配置文件后,需要执行构建工具的命令来同步或刷新项目依赖项。

对于Maven项目,你可以运行 mvn clean install 或使用你的IDE的Maven工具来刷新项目。

Spring Boot项目通常可以使用Maven或Gradle来打包成可执行的JAR文件。 

产生问题:本地可以运行,打包后运行报错~

这样子jar包算引入完成,在本地运行可以找到jar包,运行应该就是没问题了。但是打包后还是会出现找不到。

java.lang.NoClassDefFoundError错误通常表示在运行时找不到某个类的定义

添加配置:

如果打包用的是spring-boot-maven-plugin  那么针对 Maven 插件需要添加<includeSystemScope>true</includeSystemScope> 的配置

它用于告诉 Maven 在构建可执行 JAR 文件时是否包括系统范围(system scope)的依赖项。系统范围的依赖项通常是通过 <scope>system</scope> 配置引入的,而这类依赖项通常不会被包含在生成的 JAR 文件中。

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>

问题的根本原因是在你的项目中,jar 被定义为一个系统范围的依赖项,因此在默认情况下,它不会被包含在生成的 JAR 文件中。这就是为什么在构建可执行 JAR 文件并运行它时,无法找到.jar 的原因。

需要注意的是,这种做法仅适用于将 作为系统范围依赖项引入的情况。如果可能,最好使用 Maven 仓库中的依赖项,而不是将 JAR 文件放在项目的本地目录中,并将其配置为系统范围依赖项,因为这更符合 Maven 的约定。但在某些情况下,必须引入本地 JAR 文件,这时设置 <includeSystemScope>true</includeSystemScope> 是一个有效的解决方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.UnifiedJedis at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~\[na:1.8.0_20\] at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~\[na:1.8.0_20\] at java.security.AccessController.doPrivileged(Native Method) ~\[na:1.8.0_20\] at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~\[na:1.8.0_20\] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~\[na:1.8.0_20\] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~\[na:1.8.0_20\] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~\[na:1.8.0_20\] ... 56 common frames omitted 引用\[2\]:只要将redis启动器中的lettuce排除在外,注意版本号不要写,默认会继承父项目的版本号以防jar包冲突。 <!-- redis启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!-- jedis连接池--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> 引用\[3\]:在pom中导入jetcache坐标中的redis与springboot版本冲突导致, <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2.7.0.M1</version> <!--这里版本不唯一,也可能是别的版本--> </dependency> 解决方法: 问题:Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/ConnectionPoolConfig 回答: 这个错误是由于缺少redis.clients.jedis.ConnectionPoolConfig引起的。根据引用\[1\],可能是由于缺少redis.clients.jedis.UnifiedJedis导致的。解决这个问题的方法有两种。一种是根据引用\[2\],在项目的pom文件中排除lettuce-core依赖,然后添加jedis依赖。另一种是根据引用\[3\],检查项目中的redis和springboot版本是否冲突,如果有冲突,可以尝试升级或降级其中一个版本以解决冲突。 #### 引用[.reference_title] - *1* *3* [【Spring常见错误】java.lang.NoClassDefFoundError: redis/clients/jedis/UnifiedJedis](https://blog.csdn.net/qq_52360069/article/details/125275138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [springboot整合redis中 出现Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool](https://blog.csdn.net/qq_45059663/article/details/113608498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值