Neo4j 2.0.0RC1 StartService失败87

时间:2013-11-22 15:26:07

标签: neo4j

我刚刚下载了RC2。我过去没有遇到问题1.9。在Windows 7上运行。

这是我安装时发生的事情。所有启动服务的尝试都失败,并显示87错误消息。

C:\Neo4j\Neo4JTest\neo4j-community-2.0.0-RC1\bin>Neo4jInstaller.bat install
"WARNING: this installer is deprecated and may not be the optimal way to install Neo4j on your system."
"Please see the Neo4j Manual for up to date information on installing Neo4j."
Press any key to continue
[SC] CreateService SUCCESS
[SC] StartService FAILED 87:

The parameter is incorrect.

关于警告消息:安装程序似乎没有安装作为服务的选项,我在手册中没有看到任何其他说明作为服务安装。

http://docs.neo4j.org/chunked/2.0.0-RC1/server-installation.html#windows-install

3 个答案:

答案 0 :(得分:2)

Neo4j 2.0.0-RC1
Neo4j的社区-2.0.0-RC1窗口
Windows 7

neo4j>bin\Neo4jInstaller.bat install

[SC] CreateService SUCCESS
[SC] StartService FAILED 87:
The parameter is incorrect.

此问题是新Neo4j安装bat文件中的错误组合导致binPath=文件本身sc create service命令中的Neo4jInstaller.bat参数损坏的结果。< / p>

具体来说,sc create命令要求引用此实例中的binPath=参数,因为Neo4j %binPath%变量中存在嵌入空格。但是,sc create中创建的Neo4jInstaller.bat命令包含未转义的引号和%javaPath%变量定义中%binPath%变量中嵌入的错误空格。

要解决此问题,需要编辑两个文件:

bin\functions.bat
bin\Neo4jInstaller.bat

%javaPath%变量中嵌入的无效空格是由set javaPath="%JAVA_HOME%"functions.bat命令中“=”符号后面的空格引起的。

%binPath%中未转义的引号需要在Neo4jInstaller.bat中进行三次更改:

  1. 在嵌入%javaPath%变量之前,必须删除%binPath%变量中的引号。
  2. 必须包含整个%javaPath%\bin\java.exe路径 引号。
  3. %binPath%变量值必须用引号括起来,并且 必须转义%binPath%变量中嵌入的引号。
  4. 此外,必须修改functions.bat中对Neo4jInstaller.bat的调用,因为functions.bat位于\bin子目录中,并且必须从Neo4jInstaller.bat运行neo4j root functions.bat ============= :findJavaHome if not "%JAVA_HOME%" == "" ( if exist "%JAVA_HOME%\bin\javac.exe" ( rem set javaPath= "%JAVA_HOME%\jre" set javaPath="%JAVA_HOME%\jre" goto:eof ) rem set javaPath= "%JAVA_HOME%" set javaPath="%JAVA_HOME%" goto:eof ) Neo4jInstaller.bat ================== rem call functions.bat :findJavaHome rem set javaPath=%javaPath:"="""% rem set binPath="%javaPath%\bin\java.exe %loggingProperties% -DworkingDir="%~dps0.." -DconfigFile=%configFile% %classpath% %mainclass% -Dorg.neo4j.cluster.logdirectory="%~dps0..\data\log" -jar %~dps0%wrapperJarFilename% %serviceName%" call %~dps0functions.bat :findJavaHome set javaPath=%javaPath:"=% set binPath="%javaPath%\bin\java.exe" %loggingProperties% -DworkingDir="%~dps0.." -DconfigFile=%configFile% %classpath% %mainclass% -Dorg.neo4j.cluster.logdirectory="%~dps0..\data\log" -jar %~dps0%wrapperJarFilename% %serviceName% set binPath="%binPath:"=\"%" 目录。

    {{1}}


    https://github.com/neo4j/neo4j/pull/1535的GitHub上有一个“已关闭”的Neo4j票,只能部分解决RC2的这些问题。但是,与此同时,你必须自己解决这个问题。

答案 1 :(得分:0)

所以这就是我发现的。

这里有一个注册表项: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \ services_whatever_you_named_the_service

Image Path的引用如下:

"C:\Program Files\Java\jdk1.7.0_21\jre"\bin\java.exe ....

我删除了引号

C:\Program Files\Java\jdk1.7.0_21\jre\bin\java.exe ....

它现在有效。

查看bat文件,它从我的JAVA_HOME env变量中找到javaPath,并在functions.bat中设置带有引号的%javaPath%

然后有一个部分在Neo4jInstaller.bat第55行的javaPath中添加了三个额外的引号来代替现有的引号

set javaPath=%javaPath:"="""%

在GitHub上发现这个问题,不确定是否会解决这个问题,考虑到有人对此问题发表评论: https://github.com/neo4j/neo4j/pull/1535

答案 2 :(得分:0)

这是搜索以下内容时在Google中弹出的第一个结果:“ [SC] StartService失败87:参数不正确。”

再次检查路径。在大多数情况下,错误出在加引号的路径中。

使用.NET Core 2.0创建Windows服务时遇到了这个问题。

路径示例:

sc create YourServiceName binPath= "C:\Users\john\source\published\YourServiceName\YourServiceName.exe"

我的错误是空格:

sc create YourServiceName binPath= " C:\Users\john\source\published\YourServiceName\YourServiceName.exe"