1. 程式人生 > >maven的dependencies已經引入jar包 執行程式時卻提示找不到jar包

maven的dependencies已經引入jar包 執行程式時卻提示找不到jar包

我是在連線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: 不推薦使用