當我第一次啟動ScyllaDB時:
Cluster cluster = Cluster.builder().addContactPoints("xx.xxx.xx.xxx").build();
Session session = cluster.connect("my_scylladb_cluster");
System.out.println(session.isClosed());
我收到以下錯誤:
===== Using optimized driver!!! =====
Exception in thread "main" java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporter
at com.datastax.driver.core.Metrics.<init>(Metrics.java:156)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1773)
at com.datastax.driver.core.Cluster.init(Cluster.java:228)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:401)
at com.datastax.driver.core.Cluster.connect(Cluster.java:352)
at scylladbX.ScyllaDBXMain.main(ScyllaDBMain.java:12)
Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.JmxReporter
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
在我的Maven POM檔案中,我使用的是最新版本Metrics:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>4.2.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.dropwizard.metrics/metrics-graphite -->
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-graphite</artifactId>
<version>4.2.9</version>
</dependency>
我注意到,如果我降級到更早的版本Metrics,問題就會消失:
<!-- https://mvnrepository.com/artifact/com.codahale.metrics/metrics-core -->
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.codahale.metrics/metrics-graphite -->
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-graphite</artifactId>
<version>3.0.0</version>
</dependency>
不ScyllaDB支持最新版本Metrics?支持的最新版本是什么?
謝謝
uj5u.com熱心網友回復:
此處的 DataStax Java 驅動程式檔案有一個關于您看到的問題的部分:
雖然驅動程式依賴于 Metrics 3.2.x,但它也適用于 Metrics 4,但有一些注意事項。在 Metrics 4 中,JMX 報告被移動到一個單獨的模塊,metrics-jmx。因此,在初始化集群時,您可能會在運行時遇到以下例外:
Exception in thread "main" java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporter at com.datastax.driver.core.Metrics.<init>(Metrics.java:103) at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1402) at com.datastax.driver.core.Cluster.init(Cluster.java:159) at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330) at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:305) at com.datastax.durationtest.core.DurationTest.createSessions(DurationTest.java:360) .... Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.JmxReporter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ... 8 more
該檔案還建議在這種情況下該怎么做。
無論如何,此問題與 Scylla(您要連接的后端服務器)無關 - 只是您正在使用的 Java 客戶端(“驅動程式”)的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/476035.html
標籤:行家 卡桑德拉 nosql datastax-java-驱动程序 青蟹
下一篇:當我運行通過mavenshade插件制作的uberjar時,為什么SparkSubmit會導致NoSuchMethodError?
