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

https://blog.csdn.net/xuanmingren/article/details/80465063

我是在连接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的依赖会被打包

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

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

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

5、system: 不推荐使用

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值