Cassandra nodetool java.lang.NullPointerException

Pay*_*aro 4 nullpointerexception cassandra nodetool

当我运行命令时$ nodetool help,出现以下错误;

java.lang.NullPointerException
  at org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1877)
  at org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:62)
  at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:79)
  at org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:807)
  at org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:199)
  at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:167)
Run Code Online (Sandbox Code Playgroud)

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

Le *_*exo 6

我有同样的错误。

我建议您也使用 java 7 或 8(未测试 7),而不是 java 9 或 10。

$ 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)
Run Code Online (Sandbox Code Playgroud)

$ java --version # 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)
Run Code Online (Sandbox Code Playgroud)

$ nodetool # java 9

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)
Run Code Online (Sandbox Code Playgroud)

我假设 cassandra 代码尝试在某处解析 java 版本并且不处理最新的 java 版本


PeM*_*eMa 5

我可以通过降级默认的 Java 版本在 Ubuntu 18.4 上解决它:

sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

  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
Run Code Online (Sandbox Code Playgroud)

现在只需选择 java 版本 8。如果一切正常,您可以尝试java -version


小智 -2

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

./nodetool help
Run Code Online (Sandbox Code Playgroud)