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) 中。我找不到真正的原因。
不为我工作的原因如下:
cassandra-env.sh 由服务器加载。 (如果加载了如何查看是否加载)
可能还有其他问题。
某人,请让我离开这里。
终于解决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。
我在 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]
这个问题有解决办法(
我在 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 由服务器加载。 (如果加载了如何查看是否加载)
可能还有其他问题。
某人,请让我离开这里。
终于解决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。