Cassandra没有启动带有JDK到8u161的AbstractMethodError的原因?
我的Cassandra不会在新安装的root上启动…
/var/log/cassandra/debug.log打印:
ERROR [main] 2018-02-03 07:13:46,463 CassandraDaemon.java:706 – 启动时遇到exceptionjava.lang.AbstractMethodError:org.apache.cassandra.utils.JMXServerUtils $ Exporter.exportObject
root@srv49023:~# java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) root@srv49023:~# systemctl status cassandra ● cassandra.service - LSB: distributed storage system for structured data Loaded: loaded (/etc/init.d/cassandra) Active: active (exited) since Sat 2018-02-03 07:13:43 EST; 1min 8s ago Process: 213 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS) Feb 03 07:13:43 srv49023 systemd[1]: Started LSB: distributed storage system for structured data.
谢谢你的帮助!
这似乎与2天前发布的JDK升级到8u161有关。
Cassandra Jira开了一张票
我找不到已发表的解决方法。 您可能必须返回到JDK的早期版本或等待修复该问题的Cassandra 3.11.2。
如果等到Cassandra 3.11.2
不是一个选项,你可以使用旧版本的Java和Cassandra。 以下示例。
- 下载旧Cassandra版本( 链接 )的二进制tarbell(-bin)。 我使用
3.10.0
- 提取下载的tarbell:
tar -xvf apache-cassandra-3.100bin.tar.gz -C /home/ty/src
( 提取的更多细节 ) - 下载旧的Java版本( 链接 )。 我使用
Java SE Development Kit 8u151
(1.8.151) -
删除不兼容的Java版本(
Java 1.8.161
)( 说明 )。 -
例如:
[root @ localhost ty] #rpm -qa | grep java
的tzdata-java的2017b-2.fc27.noarch
ABRT-java的连接器1.1.0-14.fc27.x86_64
Java的1.8.0-的OpenJDK – 无头1.8.0.144-7.b01.fc27.x86_64
javapackages工具,5.0.0-7.fc27.noarch
[root @ localhost ty] #sudo yum remove java-1.8.0-openjdk-headless-1.8.0.144-7.b01.fc27.x86_64
-
安装旧版Java:
rpm -ivh jdk-8u151-linux-x64.rpm
- Cd到您的Cassandra目录并尝试启动Cassandra:
bin/cassandra -f
(更多说明 )
- java.lang.NoClassDefFoundError:org / apache / spark / Logging
- 如何在Cassandra中列出列族中的所有列名?
- 获得Cassandra Writes背压的最佳方法是什么?
- 如何使用datastax java驱动程序有效地使用批量写入cassandra?
- Cassandra使用TokenAwarePolicy和shuffleReplicas进行负载均衡
- 无法启动DSE搜索的solr方面
- 如何在CQL 3预处理语句中绑定IN子句值?
- Cassandra如何选择节点发送请求?
- 使用Datastax Cassandra驱动程序时重用PreparedStatement?