我尝试使用 Azul JDK 11 中的 cassandra-unit 库和 Gradle 项目运行嵌入式 Cassandra,并出现以下 AccessDenindException。我已经检查了 build
文件夹的权限,它不是只读的,并且已经有一些文件。项目中没有任何其他可能导致问题的内容。
org.apache.cassandra.io.FSWriteError: java.nio.file.AccessDeniedException: build\embeddedCassandra\commitlog\CommitLog-6-1642719269564.log
at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:143)
at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:160)
at org.apache.cassandra.db.commitlog.CommitLogSegment.discard(CommitLogSegment.java:409)
Java 类
EmbeddedCassandraServerHelper.startEmbeddedCassandra();
build.gradle
testCompile 'org.cassandraunit:cassandra-unit:4.3.1.0'
testCompile 'com.datastax.oss:java-driver-core:4.13.0'
最佳答案
这里并没有发生任何神奇的事情,因为 Cassandra 只是使用 Java IO 实用程序,因此这是一个低级文件系统问题。
要检查的事情之一是目录中的现有提交日志是否由 Cassandra 进程无权访问的其他用户拥有。例如,CommitLog-6-1642719269564.log
归 root
所有,但 C* 进程与 cassandra
一起运行。如果是这样,您将需要更改文件所有权。干杯!
[更新] 仅 Cassandra 4.x 支持 Java 11。早期版本的 Cassandra 仅适用于 Java 8。
关于java - 使用 Azul jdk 11 运行嵌入式 cassandra 时出现 AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70794850/