解决java.lang.IllegalArgumentException: URI is not hierarchical报错的问题
作者:玹之又玹
这篇文章主要介绍了解决java.lang.IllegalArgumentException: URI is not hierarchical报错的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
java.lang.IllegalArgumentException: URI is not hierarchical
Thread.currentThread().getContextClassLoader("类的全路径").getClass().newInstance()
一个类的静态块初始化异常了,后面调用这个类创建对象会报错吗?
是的,如果一个类的静态块初始化过程中抛出了异常,后续任何尝试创建该类的对象或访问该类的静态成员都会失败,并抛出 ExceptionInInitializerError
或显示 "Could not initialize class ClassName" 的错误。
这是因为Java类加载机制的工作方式
- 当 JVM 第一次遇到一个类时(通过创建对象、访问静态成员等方式),它会触发类加载过程
- 类加载过程包括:加载、验证、准备、解析和初始化几个步骤
- 在初始化阶段,JVM 会执行类的静态初始化块和静态字段初始化
- 如果在这个过程中抛出了任何异常,那么类的初始化会失败
- 一旦类初始化失败,JVM 会将该类标记为不可用状态
- 之后任何尝试使用该类的操作都会导致
NoClassDefFoundError
或者显示 "Could not initialize class ClassName" 的错误
这就是为什么当 HiveConf
类的静态初始化块失败后,后续调用 HiveConf.setHiveSiteLocation(null)
或创建 HiveConf
对象时会报错:
"Could not initialize class org.apache.hadoop.hive.conf.HiveConf"
要解决这个问题,您需要修复导致静态初始化块失败的根本原因,在这种情况下,就是解决 URI is not hierarchical
错误。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- 解决java.lang.IllegalArgumentException异常问题
- java.lang.IllegalArgumentException:Invalid character found异常解决
- 基于java.lang.IllegalArgumentException异常报错问题及解决
- IDEA 中使用 ECJ 编译出现 java.lang.IllegalArgumentException的错误问题
- 如何解决Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X