maven的dependencies已经引入jar包 运行程序时却提示找不到jar包

本文详细解析了Maven中pom.xml文件内的依赖配置问题,特别是scope标签的不同取值及影响,包括compile、provided、runtime、test和system,并介绍了如何解决因错误配置导致的ClassNotFound异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是在连接oracle数据库时 在pom.xml里添加依赖后确认dependencies已经引入jar包,而项目运行时却报ClassNotFound

多次尝试后,发现是因为在引入依赖时是复制以前的内容而忘记删除scope标签导致的

 例如: 在maven的pom.xml里面

                <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
<scope>provided</scope>  //多了这一行配置造成的原因

</dependency>

那为什么会这样呢?

因为pom.xml的dependency标签下的scope标签是规定了jar包需要的范围

scope标签里面有5个值

1、compile 范围 :是默认编译范围 在项目编译,测试,运行均需要,由于运行时需要所以compile的依赖会被打包

2provided: provided依赖只有当JDK或者一个容器已提供依赖时才使用,其是在编译,测试需要,运行时不需要,因为某些jar包服务器上面有,如果运行时再需要就会造成jar包冲突,比如:servlet api会被tomcat容器提供.上面运行时找不到jar包就是这个原因,因为provided在运行时并不被需要,而tomcat服务器和jdk上也没有这个jar包,所以运行时找这个jar包时就会找不到,解决方法就是不用provided,通过删除这个scope标签即可,因为删除后就是默认的compile范围了

3runtime依赖: 在运行和测试需要,编译期不需要,只有在编译和运行时才使用,由于运行时需要所以runtime依赖会被打包

4test依赖: 在测试编译和测试运行时需要,在编译和运行时都不需要,因此不会被打包

5、system: 不推荐使用




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值