开发者

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

目录
  • Java.lang.IllegalArgumentException: URI is not hierarchical
    • 一个类的静态块初始化异常了,后面调用这个类创建对象会报错吗?
    • 这是因为Java类加载机制的工作方式
  • 总结

    java.lang.IllegalArgumentExceptionandroid: URI is not hierarchical

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

    Thread.currentThread编程().getContextClassLoader("类的全路径").getClass().newInstance()

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

    一个类的静态块初始化异常了,后面调用这个类创建对象会报错吗?

    是的,如果一个类的静态块初始化过程中抛出了异常,后续任何尝试创建该类的对象或访问该类的静态成员都会失败,并抛出 ExcepjstionInInitializerError 或显示 "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.Hi编程veConf" 

    要解决这个问题,您需要修复导致静态初始化块失败的根本原因,在这种情况下,就是解决 URI is not hierarchical 错误。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜