IDEA maven項目報錯,找不到或無法找到主類


最近在寫UDF,依賴復制的公司的依賴,

<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.2</version>
<scope>provided</scope>
</dependency>
然后正常的code,在UDF里寫了main方法,運行提示我找不到或無法加載主類,根據大佬的指示,發現依賴有個修飾
<scope>provided</scope>
provided,就是這個providede,讓我寫測試方法可以運行,但是在程序里寫main方法卻提示找不到類,

增加provided的意思是這個依賴只在編譯和測試階段可以用,運行環境不可用,即打jar包不會將其放進去,即lib目錄里不會有它。

總結scope里的字段意思

前言:
1.Maven依賴中scope的默認值是compile
2.scope制定了依賴(第三方jar包)的作用范圍
3.作用范圍包括,所在項目的測試、編譯、運行、打包等生命周期
4.編譯和運行還分為 測試代碼的編譯和運行、非測試代碼的編譯和運行

scope分類
test 測試范圍
測試范圍的依賴(第三方jar包),針對測試相關代碼的編譯和運行,在通常代碼的編譯和運行時都不需要,只有在有關測試的代碼編譯和運行測試階段可用
compile 編譯范圍
依賴默認范圍,即如果依賴沒有scope,默認為<scope> compile </scope>,該依賴需要參與當前項目的編譯、測試、運行、打包
runtime
不參加編譯,但是后期的運行和測試需要
provided
與compile很像,使用它時,jar包運行的JDK或容器會提供它,所以不需要放入jar包,僅用於編譯和測試環境
system
與provided很像

被依賴項不會從maven倉庫下載,而是從本地系統指定路徑下尋找,需要 systemPath 屬性



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM