Cassandra nodetool java.lang.NullPointerException

Cassandra nodetool java.lang.NullPointerException,cassandra,nullpointerexception,nodetool,Cassandra,Nullpointerexception,Nodetool,当我运行命令$nodetool help时,我得到以下错误 java.lang.NullPointerException 位于org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1877) 位于org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector

当我运行命令
$nodetool help
时,我得到以下错误

java.lang.NullPointerException
位于org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1877)
位于org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:62)
位于org.apache.cassandra.io.util.FileUtils(FileUtils.java:79)
位于org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:807)
位于org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:199)
位于org.apache.cassandra.tools.NodeTool.main(NodeTool.java:167)

如果有人有任何提示,请告诉我。

如果要运行帮助命令,请移动到Cassandra的bin目录,然后运行以下命令-

./nodetool help

我也有同样的错误

我建议您也使用Java7或Java8(未经测试的7),而不是Java9或Java10

$java-version#java 8

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
$java--version#java9

java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
error: null
-- StackTrace --
java.lang.NullPointerException
    at org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1881)
    at org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:82)
    at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:79)
    at org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:788)
    at org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:200)
    at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:168)
$nodetool#java 9

java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
error: null
-- StackTrace --
java.lang.NullPointerException
    at org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1881)
    at org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:82)
    at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:79)
    at org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:788)
    at org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:200)
    at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:168)
错误:null
--堆栈跟踪--
java.lang.NullPointerException
位于org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1881)
位于org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:82)
位于org.apache.cassandra.io.util.FileUtils(FileUtils.java:79)
位于org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:788)
位于org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:200)
位于org.apache.cassandra.tools.NodeTool.main(NodeTool.java:168)

我假设cassandra代码试图解析某个地方的java版本,但不处理最新的java版本

我也遇到了同样的错误,但您可以通过明确指定配置来解决这个问题:

JAVA_HOME=“/opt/JAVA/my-JAVA”
PATH=“$JAVA_HOME/bin:$PATH”
#运行节点工具
CASSANDRA_CONF=/path/tocassandra/CONF.d\
JAVA_工具_选项=\
JAVA_HOME=/opt/JAVA/my-JAVA\
/bin/nodetool状态

HTH

我可以在Ubuntu 18.4上通过降级默认的java版本来解决这个问题:

sudo update-alternatives --config java
输出应该如下所示:

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

现在只需选择java版本8。如果一切都能用
java-version

运行,那么您可以尝试一下,如果您至少可以指定您正在使用的Cassandra版本,您是否使用与正在运行的C*附带的相同版本的nodetool?没关系。我在本地运行命令。我让某人ssh进入集群,然后worked@PayalZilaro请在下面添加您的答案,这样就不会显示为开放式问题。太棒了!我还想补充一点,从Ubuntu Bionic上的cassandra 3.11.4开始,覆盖JVM的合适脚本应该是“/usr/share/cassandra/cassandra.in.sh”。谢谢你,伙计!您使用的java版本是什么?尝试使用Java13并得到相同的错误。Cassandra4.x将添加Java11兼容性,但目前无法使用nodetool。我使用了OpenJDK-openj9。我认为目前只支持热点虚拟机。您可以尝试其中之一(Oracle openjdk.adoptopenjdk hotspot、Amazon Corretto等)。