解決java.lang.IllegalArgumentException: URI is not hierarchical報錯的問題
java.lang.IllegalArgumentException: URI is not hierarchical

Thread.currentThread().getContextClassLoader("類的全路徑").getClass().newInstance()
一個類的靜態(tài)塊初始化異常了,后面調(diào)用這個類創(chuàng)建對象會報錯嗎?
是的,如果一個類的靜態(tài)塊初始化過程中拋出了異常,后續(xù)任何嘗試創(chuàng)建該類的對象或訪問該類的靜態(tài)成員都會失敗,并拋出 ExceptionInInitializerError 或顯示 "Could not initialize class ClassName" 的錯誤。
這是因為Java類加載機制的工作方式
- 當 JVM 第一次遇到一個類時(通過創(chuàng)建對象、訪問靜態(tài)成員等方式),它會觸發(fā)類加載過程
- 類加載過程包括:加載、驗證、準備、解析和初始化幾個步驟
- 在初始化階段,JVM 會執(zhí)行類的靜態(tài)初始化塊和靜態(tài)字段初始化
- 如果在這個過程中拋出了任何異常,那么類的初始化會失敗
- 一旦類初始化失敗,JVM 會將該類標記為不可用狀態(tài)
- 之后任何嘗試使用該類的操作都會導致
NoClassDefFoundError或者顯示 "Could not initialize class ClassName" 的錯誤
這就是為什么當 HiveConf 類的靜態(tài)初始化塊失敗后,后續(xù)調(diào)用 HiveConf.setHiveSiteLocation(null) 或創(chuàng)建 HiveConf 對象時會報錯:
"Could not initialize class org.apache.hadoop.hive.conf.HiveConf"
要解決這個問題,您需要修復導致靜態(tài)初始化塊失敗的根本原因,在這種情況下,就是解決 URI is not hierarchical 錯誤。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 解決java.lang.IllegalArgumentException異常問題
- java.lang.IllegalArgumentException:Invalid character found異常解決
- 基于java.lang.IllegalArgumentException異常報錯問題及解決
- IDEA 中使用 ECJ 編譯出現(xiàn) java.lang.IllegalArgumentException的錯誤問題
- 如何解決Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X
相關文章
Java中的CompletionService批量異步執(zhí)行詳解
這篇文章主要介紹了Java中的CompletionService批量異步執(zhí)行詳解,我們知道線程池可以執(zhí)行異步任務,同時可以通過返回值Future獲取返回值,所以異步任務大多數(shù)采用ThreadPoolExecutor+Future,需要的朋友可以參考下2023-12-12
MyBatis批量插入/修改/刪除MySql數(shù)據(jù)
這篇文章主要給大家介紹了關于MyBatis批量插入/修改/刪除MySql數(shù)據(jù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05

