在Windows 11上安装了Cassandra,获取非法访问错误:“无法初始化un-mmapper”

yr9zkbsy  于 2023-02-08  发布在  Cassandra
关注(0)|答案(1)|浏览(188)

我正尝试在Windows机器上安装Cassandra,使用Java 1. 8。我收到的错误消息如下:

ERROR [main] 2023-01-27 09:45:26,820 FileUtils.java:80 - 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
java.lang.IllegalAccessError: class org.apache.cassandra.io.util.FileUtils (in unnamed module @0x6aa8e115) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x6aa8e115
        at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:75)
        at org.apache.cassandra.config.DatabaseDescriptor.guessFileStore(DatabaseDescriptor.java:1093)
        at org.apache.cassandra.config.DatabaseDescriptor.applySimpleConfig(DatabaseDescriptor.java:493)
        at org.apache.cassandra.config.DatabaseDescriptor.applyAll(DatabaseDescriptor.java:324)
        at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:153)
        at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:137)
        at org.apache.cassandra.service.CassandraDaemon.applyConfig(CassandraDaemon.java:680)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:622)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:786)
INFO  [main] 2023-01-27 09:45:26,944 RateBasedBackPressure.java:123 - Initialized back-pressure with high ratio: 0.9, factor: 5, flow: FAST, window size: 2000.
INFO  [main] 2023-01-27 09:45:26,945 DatabaseDescriptor.java:781 - Back-pressure is disabled with strategy org.apache.cassandra.net.RateBasedBackPressure{high_ratio=0.9, factor=5, flow=FAST}.
Exception (java.lang.IllegalAccessError) encountered during startup: superclass access check failed: class org.apache.cassandra.utils.JMXServerUtils$JmxRegistry (in unnamed module @0x6aa8e115) cannot access class sun.rmi.registry.RegistryImpl (in module java.rmi) because module java.rmi does not export sun.rmi.registry to unnamed module @0x6aa8e115
java.lang.IllegalAccessError: superclass access check failed: class org.apache.cassandra.utils.JMXServerUtils$JmxRegistry (in unnamed module @0x6aa8e115) cannot access class sun.rmi.registry.RegistryImpl (in module java.rmi) because module java.rmi does not export sun.rmi.registry to unnamed module @0x6aa8e115
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:80)
        at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:159)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:204)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:633)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:786)
ERROR [main] 2023-01-27 09:45:27,067 CassandraDaemon.java:803 - Exception encountered during startup
java.lang.IllegalAccessError: superclass access check failed: class org.apache.cassandra.utils.JMXServerUtils$JmxRegistry (in unnamed module @0x6aa8e115) cannot access class sun.rmi.registry.RegistryImpl (in module java.rmi) because module java.rmi does not export sun.rmi.registry to unnamed module @0x6aa8e115
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:80)
        at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:159)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:204)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:633)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:786)

之后它与消息一起存在:主要完成。
有人能帮我吗?

qhhrdooz

qhhrdooz1#

兼容性

多条IllegalAccessError消息向我表明,您正在运行一个不受支持的Java版本,该版本与Cassandra不兼容。
您说您正在运行Java 8,但有可能您的计算机上安装了较新的版本,并且JAVA_HOME指向较新的版本。

Java支持

Cassandra 3.0/3.11及更早版本仅支持Java 8。Cassandra 4.0增加了对Java 11 LTS(CASSANDRA-9608)的支持,因此C* 4.x可以与Java 8或Java 11一起使用。
如果你安装了一个受支持的Java版本,我发现一些Java风格似乎与Cassandra不兼容。我的建议是安装一个TCK认证的Java风格,如Oracle JVM或OpenJDK。

Windows支持

值得一提的是,Cassandra使用的Java文件I/O库在Windows上一直存在问题,特别是在NTFS上。它一直是用户问题的来源,我们认为继续支持它对项目不利(参见discussion in this thread)。
我们最终在Cassandra 4.0中完全放弃了Windows支持(CASSANDRA-16171)。

备选方案

建议Windows用户使用的解决方法包括:

另外,如果你只是想学习如何在Cassandra上构建应用程序,Astra DB有一个免费的层,你可以在那里启动一个集群,只需点击5次,不需要信用卡。

相关问题