操作系统补丁后无法启动Cassandra

15

在我对操作系统打补丁后尝试启动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;

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


1
你可以使用Java的替代方案来指向一个早期的jdk 8版本,这个版本是可行的。我在最新的jdk 8上遇到了问题,无法启动DSE,所以我也做了同样的事情。 - apesa
3
这个问题在Meta上进行了讨论 - Thomas Weller
4个回答

31

这似乎与JDK升级到8u161有关,该版本在两天前发布。

已在Cassandra Jira上开了一个票。

我找不到任何已发布的解决方法。您可能需要回到较早的JDK版本或等待Cassandra 3.11.2修复此问题。

编辑:值得指出的是,此问题现在已在发布的3.11.2中得到解决,因此您可以简单地升级到此版本以解决问题。


更多信息也可以在这里找到:https://lists.apache.org/thread.html/d7eaa0eaeae575230273a3a5c88dec15569686891b6c24b388688456@%3Cuser.cassandra.apache.org%3E - Simon Fontana Oscarsson
没有可供下载的3.11.2版本,我在https://academy.datastax.com/planet-cassandra/cassandra上进行了检查。 - Vikash
1
@Vikash .... http://www.apache.org/dyn/closer.lua/cassandra/3.11.2/apache-cassandra-3.11.2-bin.tar.gz - iandotkelly
1
@Vikash...你所访问的页面上有一个链接和一条通知,上面写着“DataStax不再提供DataStax社区版或Apache Cassandra的DataStax发行版。” - iandotkelly
1
将Java更新到JDK 8u172对我来说解决了这个问题。 - blacktide

4
为了让Cassandra运行,我需要安装JDK 8u152。使用brew cask install java8无法安装。我尝试使用旧版本的cassandra.rb公式,但只得到以下结果:
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 提示:要使用Homebrew安装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服务


0

将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 url "http://127.0.0.1:3333/jdk-8u152-macosx-x64.dmg",

运行命令:brew cask reinstall java8

应该可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接