Cassandra没有启动带有JDK到8u161的AbstractMethodError的原因?

时间:2018-02-03 12:19:48

标签: java cassandra cqlsh

我的Cassandra不会在新安装的root上启动...

/var/log/cassandra/debug.log打印:

  

ERROR [main] 2018-02-03 07:13:46,463 CassandraDaemon.java:706 - 启动时遇到的异常   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 个答案:

答案 0 :(得分:4)

这似乎与2天前发布的JDK升级到8u161有关。

已在Cassandra Jira

上打开了一张故障单

我找不到已发布的解决方法。您可能必须返回到JDK的早期版本或等待修复该问题的Cassandra 3.11.2。

答案 1 :(得分:1)

如果等到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的连接器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(更多instructions