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 类加载机制的工作方式:

  1. 当 JVM 第一次遇到一个类时(通过创建对象、访问静态成员等方式),它会触发类加载过程

  2. 类加载过程包括:加载、验证、准备、解析和初始化几个步骤

  3. 在初始化阶段,JVM 会执行类的静态初始化块和静态字段初始化

  4. 如果在这个过程中抛出了任何异常,那么类的初始化会失败

  5. 一旦类初始化失败,JVM 会将该类标记为不可用状态

  6. 之后任何尝试使用该类的操作都会导致 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 错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值