【问题标题】:Can't start Cassandra after OS patch up操作系统修补后无法启动 Cassandra
【发布时间】:2018-06-27 23:02:59
【问题描述】:

当我在修补操作系统后尝试启动 Cassandra 时,出现以下错误:

Exception (java.lang.AbstractMethodError) encountered during startup: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;

java.lang.AbstractMethodError: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;
        at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:150)
        at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:135)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:405)
        at org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:104)
        at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:143)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:188)
        at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:476)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:59
        at com.datastax.bdp.DseModule.main(DseModule.java:93)
ERROR [main] 2018-01-17 13:18:03,330  CassandraDaemon.java:705 - Exception encountered during startup
java.lang.AbstractMethodError: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;

有谁知道为什么在没有其他更改的情况下,我现在遇到了这个错误?

【问题讨论】:

  • 您可以使用 Java 替代方法来指向可以工作的早期 jdk 8 版本。我只是在登陆最新的 jdk 8 并且无法启动 DSE 后做了同样的事情
  • 这个问题是discussed on Meta

标签: cassandra datastax rhel


【解决方案1】:

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

一张票已在Cassandra Jira上打开

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

编辑:值得指出的是,这个问题现在已经在发布的 3.11.2 中解决了,所以你可以简单地升级到这个版本来解决问题。

【讨论】:

【解决方案2】:

为了让 Cassandra 运行,我必须安装 JDK 8u152。使用brew cask install java8 是不可能的。我尝试使用old version of the cassandra.rb formula,但得到了:

Error: Download failed on Cask 'java8' with message: Download failed: http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-macosx-x64.dmg

我必须去这里登录才能下载 DMG:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

Protip:为了仍然能够使用自制软件安装 java8,我自己下载了 dmg,并在下载目录中启动了一个服务器:

cd ~/Downloads
php -S 0.0.0.0:3333

并将公式中的下载地址(第6行)改为:

url "http://0.0.0.0:3333/jdk-8u152-macosx-x64.dmg",

然后就可以运行了:

brew cask install java8

现在 Cassandra 再次运行。

【讨论】:

    【解决方案3】:

    您可以下载源代码并添加更改的方法,编译并将修改的类添加到 apache-cassandra.jar。您可以执行以下操作:

    1. 下载包含唯一要替换的类的org.tar
    2. 使用tar -xvf org.tar解压文件,你应该得到org目录
    3. 复制 apache-cassandra jar 文件。例如cp /usr/share/cassandra/apache-cassandra-3.11.1.jar .
    4. 在更新之前备份 jar。 cp apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup
    5. 期望当前目录包含以下文件: apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup org org.tar
    6. 执行以下命令更新jar:

      jar uf apache-cassandra-3.11.1.jar org

    7. 将文件替换到安装位置:

      mv apache-cassandra-3.11.1.jar /usr/share/cassandra

    8. 重启cassandra服务

    【讨论】:

      【解决方案4】:

      将 Cask 公式恢复为 2017 版本。

      wget https://github.com/caskroom/homebrew-versions/blob/a98da98a7e4d87e9b614b3aa25af9c6c21a753c6/Casks/java8.rb -O /usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask/Casks/java8.rb

      按照建议更改第 6 行 URL 网址“http://127.0.0.1:3333/jdk-8u152-macosx-x64.dmg”,

      brew cask 重新安装 java8

      应该可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-14
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多