Cassandra 无法初始化 class com.sun.jna.Native

Cassandra Could not initialize class com.sun.jna.Native

我在 CentOS 7 上安装了 Cassandra 3.9 版。 启动 Cassandra Server 时,出现这样的错误::

TRACE [MemtableFlushWriter:1] 2017-05-15 04:25:49,735 LogTransaction.java:264 - Closing transaction log [mc_txn_flush_3f6a46f0-3961-11e7-87b4-0728ea39fb0d.log in /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377]
ERROR [main] 2017-05-15 04:25:49,745 CassandraDaemon.java:747 - Exception encountered during startup java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Native at org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:403) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.db.SystemKeyspace.forceBlockingFlush(SystemKeyspace.java:793) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.db.SystemKeyspace.removeTruncationRecord(SystemKeyspace.java:639) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:541) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:517) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.schema.LegacySchemaMigrator.lambda$unloadLegacySchemaTables1(LegacySchemaMigrator.java:137) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.schema.LegacySchemaMigrator$$Lambda/1308179535.accept(Unknown Source) ~[na:na] at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_45] at org.apache.cassandra.schema.LegacySchemaMigrator.unloadLegacySchemaTables(LegacySchemaMigrator.java:137) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.schema.LegacySchemaMigrator.migrate(LegacySchemaMigrator.java:83) ~[apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:254) [apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601) [apache-cassandra-3.9.0.jar:3.9.0] at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730) [apache-cassandra-3.9.0.jar:3.9.0]

这个问题有解决办法( ), 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) 中。我找不到真正的原因。

不为我工作的原因如下:

  1. cassandra-env.sh 由服务器加载。 (如果加载了如何查看是否加载)

  2. 可能还有其他问题。

某人,请让我离开这里。

终于解决jna-4.0的问题了。0.jar。

lib 中的文件 jna-4.0.0.jar 没有初始化,所以我通过创建符号 link 来更改文件 jna.jar.

sudo yum install jna

sudo ln -s (JAVA_PATH)/usr/share/java/jna.jar (CASSANDRA_PATH)/usr/share/cassandra/lib

然后它产生了一些关于 tmp 的错误,用以前的解决方案解决了。

关于JNA,那边已经有一些问题了,但是不具体。

我遇到了同样的问题。清理 (rm -rf *) /tmp 文件夹或 '-Djava.io.tmpdir' 指向

的文件夹

升级后Java,Cassandra无法启动。我修好了。

1。 mkdir -p /var/lib/cassandra/tmp chown cassandra:cassandra /var/lib/cassandra/tmp

2。 将以下参数添加到文件末尾 /cassandra-env.sh JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/var/lib/cassandra/tmp"

然后重启Cassandra。