【发布时间】:2017-10-14 05:44:03
【问题描述】:
我在 CentOS 7 上安装了 Cassandra 3.9 版。 在启动 Cassandra Server 时,我收到如下错误::
TRACE [MemtableFlushWriter:1] 2017-05-15 04:25:49,735 LogTransaction.java:264 - 关闭事务日志 [mc_txn_flush_3f6a46f0-3961-11e7-87b4-0728ea39fb0d.log 在 /var/lib/cassandra/data/系统/本地-7ad54392bcdd35a684174e047860b377]
错误 [主要] 2017-05-15 04:25:49,745 CassandraDaemon.java:747 - 启动时遇到异常java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError:无法初始化类 com.sun.jna.Native 在 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:403) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.db.SystemKeyspace.forceBlockingFlush(SystemKeyspace.java:793) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.db.SystemKeyspace.removeTruncationRecord(SystemKeyspace.java:639) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:541) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:517) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.schema.LegacySchemaMigrator.lambda$unloadLegacySchemaTables$341(LegacySchemaMigrator.java:137) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.schema.LegacySchemaMigrator$$Lambda$93/1308179535.accept(未知 来源)~[na:na] at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_45] 在 org.apache.cassandra.schema.LegacySchemaMigrator.unloadLegacySchemaTables(LegacySchemaMigrator.java:137) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.schema.LegacySchemaMigrator.migrate(LegacySchemaMigrator.java:83) ~[apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:254) [apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601) [apache-cassandra-3.9.0.jar:3.9.0] 在 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730) [apache-cassandra-3.9.0.jar:3.9.0]
这个问题有一个解决方案(Cassandra Startup failure on ARM64 machine (java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Native) ),Soultion 建议更改 cassandra-env.sh。我试过了,但它不适合我。
我在 cassandra-env.sh
中(分别)检查了这些选项JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/tech/cassandra/tmp"
JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/cassandra/tmp"
JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/var/lib/cassandra/tmp"
甚至尝试过
JVM_OPTS="$JVM_OPTS -Dcassandra.boot_without_jna=true"
但问题没有改变。
我将 cassandra 记录器更改为 TRACE,但它显示的错误日志与之前没有 TRACE 相同。文件 (jna-4.0.0.jar) 存在于 lib 文件夹 (/usr/share/cassandra/lib) 中。我无法找到真正的原因。
不为我工作的原因如下:
cassandra-env.sh 由服务器加载。 (如果加载了怎么查看,是否加载)
可能还有其他问题。
有人,请让我离开这里。
【问题讨论】:
-
您能提供类路径详细信息吗?另外您使用的是哪个版本的 Java?
-
Java 1.8.0_45版本,不知道CLASS_PATH,如何获取?
-
/usr/share/cassandra 是类路径