Cassandra无法通过cassandra -f命令启动。

3

尽管我的环境变量设置正确,但我无法使用'cassandra -f'启动cassandra。我正在使用Windows 10操作系统。

我遇到了以下错误!

PS C:\WINDOWS\system32> cassandra -f                                                                                                                                                                            

*---------------------------------------------------------------------* *---------------------------------------------------------------------* 警告!检测到自动页面文件配置。建议您在运行Cassandra时禁用交换,以确保性能和稳定性。

*---------------------------------------------------------------------* *---------------------------------------------------------------------* 使用0个参数调用“Start”时出现异常:“系统找不到指定的文件”

位于 C:\cassandra\conf\cassandra-env.ps1:212 字符:5 + $p.Start() | Out-Null + ~~~~~~~~~~~~~~~~~~~~~

无法调用带有 0 个参数的“WaitForExit”:此对象没有相关联的进程。

位于 C:\cassandra\conf\cassandra-env.ps1:213 字符:5 + $p.WaitForExit() + ~~~~~~~~~~~~~~~~

无法对空值表达式调用方法。

位于 C:\cassandra\conf\cassandra-env.ps1:214 字符:5 + $stderr = $p.StandardError.ReadToEnd() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

无法对空值表达式调用方法。

位于 C:\cassandra\conf\cassandra-env.ps1:218 字符:9 + if ($stderr.Contains("Error")) + ~~~~~~~~~~~~~~~~~~~~~~~~~

无法对空值表达式调用方法。

位于 C:\cassandra\conf\cassandra-env.ps1:231 字符:5 + $sa = $stderr.Split("""") + ~~~~~~~~~~~~~~~~~~~~~~~~~

无法对空值数组进行索引。

位于 C:\cassandra\conf\cassandra-env.ps1:232 字符:5 + $env:JVM_VERSION = $sa[1] + ~~~~~~~~~~~~~~~~~~~~~~~~~

无法对空值表达式调用方法。

位于 C:\cassandra\conf\cassandra-env.ps1:234 字符:9 + if ($stderr.Contains("OpenJDK")) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~

无法对空值数组进行索引。

位于 C:\cassandra\conf\cassandra-env.ps1:247 字符:5 + $pa = $sa[1].Split("_") + ~~~~~~~~~~~~~~~~~~~~~~~

无法对空值数组进行索引。

位于 C:\cassandra\conf\cassandra-env.ps1:248 字符:5 + $subVersion = $pa[1] + ~~~~~~~~~~~~~~~~~~~~

*---------------------------------------------------------------------* *---------------------------------------------------------------------* 警告!检测到电源方案为非高性能模式,此节点的性能将受到影响。修改conf\cassandra.env.ps1以消除此警告。

*---------------------------------------------------------------------* *---------------------------------------------------------------------* 无法对空值表达式调用方法。

位于 C:\cassandra\conf\cassandra-env.ps1:406 字符:9 + if ($env:JVM_VERSION.CompareTo("1.8.0") -eq -1 -or [convert]::ToI ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用0个参数调用“Start”时出现异常:“系统找不到指定的文件”

位于 C:\cassandra\bin\cassandra.ps1:251 字符:9 + $p.Start() | Out-Null + ~~~~~~~~~~~~~~~~~~~~~

无法调用带有 0 个参数的“WaitForExit”:此对象没有相关联的进程。


Cassandra通常不在Windows上运行。它曾经有过一些Windows支持,但现在已经不再维护了。您想要启动哪个版本? - mikea
看起来,它在尝试验证您的JRE时失败了。您是否安装了Java? java -version 的输出是什么? - Aaron
@Aaron:我正在运行JDK 12.0.1。 - Akhil Suseelan
2个回答

2

所以,它似乎是在这一行失败了:

最初的回答

 if ($env:JVM_VERSION.CompareTo("1.8.0") -eq -1

当我在一个CentOS(Linux)系统上运行java -version命令时,会看到以下输出:

最初的回答:

$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

正如您所看到的,第一行的版本以特定格式“1.8.0_191”返回。
因此,有几点需要注意:
1. 我不知道Java 12的java -version输出显示什么,但我知道某些JDK供应商的格式不同。例如,AdoptOpenJDK部署会导致Cassandra 4.0出现问题(如此JIRA:https://issues.apache.org/jira/browse/CASSANDRA-14926)。
2. Cassandra 3(及以下版本)只能与Java 8配合使用。Cassandra 4(尚未发布)将支持Java 11。据我所知,Java 12还没有在路线图上。
当然,我会安装较低版本的Java。如果您正在使用Cassandra 3,则应安装Java 8的最新补丁程序。
如果问题仍然存在,建议从cassandra-env.ps1文件中删除Java版本检查。但这样做是有风险的。

Java 12.0.1 2019-04-16 Java(TM) SE Runtime Environment(版本号为12.0.1+12) Java HotSpot(TM) 64位服务器虚拟机(版本号为12.0.1+12,混合模式,共享) - Akhil Suseelan

1
我在Windows 10上使用Cassandra 3.11.7时遇到了同样的问题,通过正确设置JAVA_HOME解决了该问题。我发现JAVA_HOME应该指向'bin'的父目录,例如"C:\Program Files\Java\jre1.8.0_261"而不是"C:\Program Files\Java\jre1.8.0_261\bin"。这解决了错误"The system cannot find the path specified."。
来源: https://github.com/elastic/elasticsearch/issues/2274

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接