错误:无法初始化类ru.yandex.clickhouse.clickhouseutil

xfyts7mz  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(2884)

我在用 clickhouse-jdbc 在我的java应用程序中。我把它加到 pom.xml 这样地:

<dependency>
    <groupId>ru.yandex.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.1.34</version>
</dependency>

当我运行java应用程序时 java -jar myapp.jar . 它在扔:
java.lang.noclassdeffounderror:无法初始化类ru.yandex.clickhouse.clickhouseutil
在我打包的jar文件中,还有 ClickHouseUtil.class . 我用的是 Intellij Idea 用于 Package 罐。如何解决此问题?

gajydyqb

gajydyqb1#

错误“could not initialize class…..”表示jvm已经尝试对所提到的类执行静态初始化,但失败。
类的静态初始化涉及将值赋给任何 static 字段和运行任何 static { ... } 阻碍。有问题的班级是 ru.yandex.clickhouse.ClickHouseUtil ,该类的静态初始化只包括设置静态final字段 CLICKHOUSE_ESCAPER . 这似乎依赖于几个Guava逃逸类( com.google.common.escape.Escaper 以及 com.google.common.escape.Escapers ).
所以我怀疑这些guava类不在打包的jar文件中。
另外值得指出的是,异常消息“could not initialize class….”表示静态初始化已经失败。换句话说,当抛出此异常时,至少是jvm第二次未能加载类。当jvm第一次加载这个类失败时,您的应用程序可能报告了一条信息更丰富的错误消息。

相关问题