我刚刚下载了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
答案 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
中进行三次更改:
%javaPath%
变量之前,必须删除%binPath%
变量中的引号。%javaPath%\bin\java.exe
路径
引号。%binPath%
变量值必须用引号括起来,并且
必须转义%binPath%
变量中嵌入的引号。此外,必须修改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"