当前位置: 代码网 > it编程>编程语言>Java > 解决java.lang.IllegalArgumentException: URI is not hierarchical报错的问题

解决java.lang.IllegalArgumentException: URI is not hierarchical报错的问题

2025年06月04日 Java 我要评论
java.lang.illegalargumentexception: uri is not hierarchicalthread.currentthread().getcontextclassloa

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 错误。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com