Cassandra 没有启动 AbstractMethodError 的原因 JDK 到 8u161?
Cassandra does not start cause of an AbstractMethodError with JDK to 8u161?
我的 Cassandra 无法在新安装的 root 上启动...
/var/log/cassandra/debug.log 打印:
ERROR [main] 2018-02-03 07:13:46,463 CassandraDaemon.java:706 - Exception encountered during startup
java.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 的升级有关。
上打开工单
我找不到已发布的解决方法。您可能需要返回到早期版本的 JDK 或等待 Cassandra 3.11.2 修复该问题。
如果不能等到 Cassandra 3.11.2
,您可以使用旧版本的 Java 和 Cassandra。示例如下。
- 下载旧 Cassandra 版本 (link) 的二进制 tarbell (
-bin
)。我用了 3.10.0
- 提取下载的 tarbell:
tar -xvf apache-cassandra-3.100bin.tar.gz -C /home/ty/src
(更多 details on extracting)
- 下载旧的 Java 版本 (link)。我使用
Java SE Development Kit 8u151
(1.8.151)
删除 Java (Java 1.8.161
) (instructions) 的不兼容版本。
例如:
[root@localhost ty]# rpm -qa | grep java
tzdata-java-2017b-2.fc27.noarch
abrt-java-connector-1.1.0-14.fc27.x86_64
java-1.8.0-openjdk-headless-1.8.0.144-7.b01.fc27.x86_64
javapackages-tools-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
(更多 instructions)
我的 Cassandra 无法在新安装的 root 上启动...
/var/log/cassandra/debug.log 打印:
ERROR [main] 2018-02-03 07:13:46,463 CassandraDaemon.java:706 - Exception encountered during startup java.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 的升级有关。
上打开工单我找不到已发布的解决方法。您可能需要返回到早期版本的 JDK 或等待 Cassandra 3.11.2 修复该问题。
如果不能等到 Cassandra 3.11.2
,您可以使用旧版本的 Java 和 Cassandra。示例如下。
- 下载旧 Cassandra 版本 (link) 的二进制 tarbell (
-bin
)。我用了3.10.0
- 提取下载的 tarbell:
tar -xvf apache-cassandra-3.100bin.tar.gz -C /home/ty/src
(更多 details on extracting) - 下载旧的 Java 版本 (link)。我使用
Java SE Development Kit 8u151
(1.8.151) 删除 Java (
Java 1.8.161
) (instructions) 的不兼容版本。例如:
[root@localhost ty]# rpm -qa | grep java
tzdata-java-2017b-2.fc27.noarch
abrt-java-connector-1.1.0-14.fc27.x86_64
java-1.8.0-openjdk-headless-1.8.0.144-7.b01.fc27.x86_64
javapackages-tools-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
(更多 instructions)