我在我的java应用程序中使用clickhouse-jdbc
。我把它添加到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
来包装jar。我怎样才能解决这个问题?
发布于 2018-01-12 13:54:21
错误“无法初始化类.”这意味着JVM已经尝试执行上述类的静态初始化,但失败了。
类的静态初始化涉及为任何static
字段赋值和运行任何static { ... }
块。所讨论的类是ru.yandex.clickhouse.ClickHouseUtil
,该类的静态初始化只包括设置静态最终字段CLICKHOUSE_ESCAPER
。这似乎依赖于几个番石榴转义器类(com.google.common.escape.Escaper
和com.google.common.escape.Escapers
)。
因此,我怀疑这些番石榴类不在打包的JAR文件中。
还值得指出的是,异常消息“无法初始化类.”意味着静态初始化已经失败。换句话说,当抛出此异常时,至少是JVM第二次未能加载该类。当JVM第一次加载这个类时,您的应用程序可能报告了一条信息更丰富的错误消息。
https://stackoverflow.com/questions/48221133
复制相似问题