java - 安装 Cassandra 时出错 : NoClassDefFoundError RMIExporter

标签 java ubuntu cassandra virtualbox

我正在尝试使用 Ubuntu 14.04 在单节点 virtualbox VM 中安装 Apache Cassandra 3.11,并遵循此处提供的安装指南 https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04 .

我安装了java 8

java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) Client VM (build 25.131-b11, mixed mode)

然后按照以下步骤安装Cassandra:

echo "deb http://www.apache.org/dist/cassandra/debian 311x main" |sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
echo "deb-src http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

gpg --keyserver pgp.mit.edu --recv-keys F758CE318D77295D
gpg --export --armor F758CE318D77295D | sudo apt-key add -

gpg --keyserver pgp.mit.edu --recv-keys 2B5C1B00
gpg --export --armor 2B5C1B00 | sudo apt-key add -

gpg --keyserver pgp.mit.edu --recv-keys 0353B12C
gpg --export --armor 0353B12C | sudo apt-key add -

sudo apt-get update
sudo apt-get install cassandra

然后我跑了

sudo service cassandra status
* could not access pidfile for Cassandra

所以我改变了

CMD_PATT="cassandra.+CassandraDaemon" to "cassandra"

sudo nano +60 /etc/init.d/cassandra

然而,当我再次运行 cassandra 服务时,它返回了相同的结果。 我试着直接执行 cassandra,像这样:

sudo -su Cassandra

我得到了错误:

user@user-VirtualBox:/home$
WARN  [main] 2017-06-30 17:52:27,800 DatabaseDescriptor.java:540 - Only 
24.622GiB free across all data volumes. Consider adding more capacity to 
your cluster or removing obsolete snapshots
INFO  [main] 2017-06-30 17:52:27,928 RateBasedBackPressure.java:123 - 
Initialized back-pressure with high ratio: 0.9, factor: 5, flow: FAST, 
window size: 2000.
INFO  [main] 2017-06-30 17:52:27,929 DatabaseDescriptor.java:710 - Back-
pressure is disabled with strategy 
org.apache.cassandra.net.RateBasedBackPressure{high_ratio=0.9, factor=5, 
flow=FAST}.
INFO  [main] 2017-06-30 17:52:28,430 FileUtils.java:78 - Cannot initialize 
un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files will not 
be removed promptly.  Consider using an Oracle JVM or using standard disk 
access mode
Exception (java.lang.NoClassDefFoundError) encountered during startup: 
com/sun/jmx/remote/internal/RMIExporter
java.lang.NoClassDefFoundError: com/sun/jmx/remote/internal/RMIExporter
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007)
at 

  java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:91)
at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:143)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:188)
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:600)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689)
Caused by: java.lang.ClassNotFoundException: com.sun.jmx.remote.internal.RMIExporter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 14 more
ERROR [main] 2017-06-30 17:52:28,536 CassandraDaemon.java:706 - Exception 
encountered during startup
java.lang.NoClassDefFoundError: com/sun/jmx/remote/internal/RMIExporter
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007) ~
[na:na]
atjava.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.ja
va:174) ~[na:na]
atjava.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassL
oader.java:801) ~[na:na]
atjava.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNul
l(BuiltinClassLoader.java:699) ~[na:na]
atjava.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinCl
assLoader.java:622) ~[na:na]
atjava.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoa
der.java:580) ~[na:na]
atjava.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassL
oaders.java:185) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na]
atorg.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.j
ava:91) ~[apache-cassandra-3.11.0.jar:3.11.0]
atorg.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.
java:143) [apache-cassandra-3.11.0.jar:3.11.0]
atorg.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:18
8) [apache-cassandra-3.11.0.jar:3.11.0]
atorg.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java
:600) [apache-cassandra-3.11.0.jar:3.11.0]
atorg.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689
) [apache-cassandra-3.11.0.jar:3.11.0]
 Caused by: java.lang.ClassNotFoundException: 
com.sun.jmx.remote.internal.RMIExporter
atjava.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoa
der.java:582) ~[na:na]
atjava.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassL
oaders.java:185) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na]
... 14 common frames omitted

我错过了什么?这是java安装的错误吗?我应该降低 Cassandra 版本吗?是 VM 的问题吗?

谢谢。

最佳答案

我在 Windows 上遇到了同样的错误。当时,我的 JAVA_HOME 设置为 JDK 1.9。我将其更改为指向 JRE1.8.0_144 并且它起作用了。还确保我安装了 Python 2.7(不确定这对你是否重要)。

关于java - 安装 Cassandra 时出错 : NoClassDefFoundError RMIExporter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851318/

相关文章:

java - 如何获取列值的类型

c - sys/types.h 位于何处?

正则表达式 grep 外部 IP 也带回内部 IP - 为什么?

mysql - 用于 Web 应用程序的大容量数据的后端技术

java - 在 Android 中保存 ArrayList 的最简单方法是什么?

python - 如何使用从源代码构建的 python 配置 mod_wsgi?

cassandra - 不同 cassandra 表中的相同分区键加起来是否达到单元理论限制?

java - 在java中解码编码字符串?

java - 使用日期作为键的树形图 Java

java - 尝试用java中的迭代器构建XML文件