OS 修补后无法启动 Cassandra
Can't start Cassandra after OS patch up
当我在修补 OS 后尝试启动 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;
有谁知道为什么我现在 运行 在没有其他更改的情况下陷入此错误?
这似乎与 2 天前发布的 JDK 到 8u161 的升级有关。
上打开工单
我找不到已发布的解决方法。您可能需要返回到早期版本的 JDK 或等待 Cassandra 3.11.2 修复该问题。
编辑:值得指出的是,这个问题已经在已经发布的3.11.2版本中得到解决,所以你可以直接升级到这个版本来解决这个问题。
要获得 Cassandra 运行ning,我必须安装 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
提示:为了仍然能够使用自制软件安装 java8 我自己下载了 dmg,并在下载目录中启动了一个服务器:
cd ~/Downloads
php -S 0.0.0.0:3333
并将公式中的下载URL(第6行)改为:
url "http://0.0.0.0:3333/jdk-8u152-macosx-x64.dmg",
然后能够运行:
brew cask install java8
现在 Cassandra 又 运行ning 了。
您可以下载源码添加修改后的方法,编译添加修改后的class到apache-cassandra.jar。您可以执行以下操作:
- 下载 org.tar 包含唯一要替换的 class。
- 使用
tar -xvf org.tar
解压文件,您应该得到 org
目录
- 复制 apache-cassandra jar 文件。例如
cp /usr/share/cassandra/apache-cassandra-3.11.1.jar .
- 更新前备份 jar。
cp apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup
.
- 期望当前目录包含以下文件:
apache-cassandra-3.11.1.jar
apache-cassandra-3.11.1.jar_backup
org
org.tar
执行以下命令更新jar:
jar uf apache-cassandra-3.11.1.jar org
将文件替换到安装位置:
mv apache-cassandra-3.11.1.jar /usr/share/cassandra
重启cassandra服务
将 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 重新安装 java8
应该可以。
当我在修补 OS 后尝试启动 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;
有谁知道为什么我现在 运行 在没有其他更改的情况下陷入此错误?
这似乎与 2 天前发布的 JDK 到 8u161 的升级有关。
上打开工单我找不到已发布的解决方法。您可能需要返回到早期版本的 JDK 或等待 Cassandra 3.11.2 修复该问题。
编辑:值得指出的是,这个问题已经在已经发布的3.11.2版本中得到解决,所以你可以直接升级到这个版本来解决这个问题。
要获得 Cassandra 运行ning,我必须安装 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
提示:为了仍然能够使用自制软件安装 java8 我自己下载了 dmg,并在下载目录中启动了一个服务器:
cd ~/Downloads
php -S 0.0.0.0:3333
并将公式中的下载URL(第6行)改为:
url "http://0.0.0.0:3333/jdk-8u152-macosx-x64.dmg",
然后能够运行:
brew cask install java8
现在 Cassandra 又 运行ning 了。
您可以下载源码添加修改后的方法,编译添加修改后的class到apache-cassandra.jar。您可以执行以下操作:
- 下载 org.tar 包含唯一要替换的 class。
- 使用
tar -xvf org.tar
解压文件,您应该得到org
目录 - 复制 apache-cassandra jar 文件。例如
cp /usr/share/cassandra/apache-cassandra-3.11.1.jar .
- 更新前备份 jar。
cp apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup
. - 期望当前目录包含以下文件:
apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup org org.tar
执行以下命令更新jar:
jar uf apache-cassandra-3.11.1.jar org
将文件替换到安装位置:
mv apache-cassandra-3.11.1.jar /usr/share/cassandra
重启cassandra服务
将 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 重新安装 java8
应该可以。