今天我的Neo4j服务器出现故障。当我再次尝试启动它时,我从PowerShell中收到以下错误:
PS C:\Users\brunotomas> 'E:\neo4j' | Start-Neo4jServer
Start-Service : Service 'Neo4j-Server (Neo4j-Server)' cannot be started due to the following error: Cannot start servic
e Neo4j-Server on computer '.'.
At E:\neo4j\bin\Neo4j-Management\Start-Neo4jServer.ps1:142 char:30
+ $result = Start-Service <<<< -Name $ServiceName -PassThru
+ CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
然后我卸载它并尝试重新安装它以查看它是否已修复。显然它会创建服务,但不像以前那样启动服务。
当我尝试通过Windows上的“服务”启动服务时,出现以下错误:
Windows could not start the Neo4j-Server service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion.
我已尽力解决这个问题,但没有成功。是否有人有任何线索可能导致这个问题? 我在Windows 2008服务器上运行Neo4j 2.3.2。
编辑:我今天发现的更多信息: 事件查看器显示我尝试启动服务时达到的超时时间:
A timeout was reached (60000 milliseconds) while waiting for the Neo4j-Server service to connect.
尝试在控制台上启动服务器时,会抛出以下异常
PS C:\Users\brunotomas> 'E:\neo4j' | Start-Neo4jServer -Console -Wait
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't obtain class com.sun.jna.CallbackReference.AttachOption
s
at com.sun.jna.Native.initIDs(Native Method)
at com.sun.jna.Native.<clinit>(Native.java:115)
at com.sun.jna.Structure.<clinit>(Structure.java:132)
at org.rzo.yajsw.WindowsXPProcess.start(WindowsXPProcess.java:1474)
at org.neo4j.wrapper.ServerProcessConsole.doStart(ServerProcessConsole.java:45)
at org.neo4j.wrapper.ServerProcess.<init>(ServerProcess.java:115)
at org.neo4j.wrapper.ServerProcessConsole.<init>(ServerProcessConsole.java:31)
at org.neo4j.wrapper.NeoServiceWrapper.launchAsConsoleApp(NeoServiceWrapper.java:48)
at org.neo4j.wrapper.NeoServiceWrapper.main(NeoServiceWrapper.java:35)
1
答案 0 :(得分:1)
解决方案非常简单,但有点难以找到。
另一个应用程序正在使用它自己的JNA DLL并且Neo4j正在加载它们。
刚刚从PATH
删除了有冲突的引用,但它确实有效。
答案 1 :(得分:0)
您的Java版本是否可能在您的脚下更新?看起来更像是与版本不兼容相关的东西。或者做了任何清理过程删除......最好尝试重新安装相同的Neo4j版本并再次将其指向您的数据库。
答案 2 :(得分:0)
我在Windows上运行neo4j,在我看来,问题的症结在于Java(32位)v / s OS版本的安装版本之间不兼容。导致我想到这一点的最大线索是neo4j-service.2018-08-03日志文件中的以下几行
[2018-08-03 14:55:42] [信息] [1432]正在启动服务... [2018-08-03 14:55:42] [错误] [1432]%1无效Win32应用程序。 [2018-08-03 14:55:42] [错误] [1432]无法创建Java C:\ JavaNew \ bin \ server \ jvm.dll [2018-08-03 14:55:42] [错误] [1432 ]%1不是有效的Win32应用程序。 [2018-08-03 14:55:42] [错误] [1432] ServiceStart返回1
存在很多潜在的问题,因此我尝试着将所有问题汇总在一起,
Windows服务无法处理带空格的文件夹中的服务名称;特别是如果存在另一个与空格相同的文件夹。例如-如果C:\ Program \ Something ...,则C:\ Program Files ...将出现问题。
要解决此问题,我将Neo4j放在根文件夹c:\ Neo4j
Get-Java.ps1(位于.. \ bin \ Neo4j-Management文件夹下)在“ JAVA_HOME”的路径变量中查找(通常在* nix环境中找到)。如果在这里找不到它,它将继续在注册表中寻找,最后举起手来!
要解决这个问题,我只需要输入一个path变量。作为一项好措施,我卸载了Java并在C:\ JavaNew
下的根文件夹中重新安装了Java。回想起来,此步骤可能不是问题的一部分,因此可以忽略。但是为了完整起见,我将其留在这里。
Invoke-Neo4j.ps1(也在.. \ bin \ Neo4j-Management文件夹下)具有确定操作系统是32位(或64位)的代码。基于此,它确定是否应运行prunsrv-i386.exe(32位)或prunsrv-amd64.exe(64位)。
这必须与安装的Java版本匹配。
运行java -XshowSettings:all并检查sun.arch.data.model值(在我的情况下为32)后,我意识到我的操作系统是64位,而Java版本是32位。
为了解决这个问题,我输入了代码(非常克鲁格!)。我相信有更好的方法可以达到相同的结果,但这就是我所使用的。
开关((Get-WMIObject -Class Win32_Processor | Select-Object -First 1).Addresswidth){32 {$ PrunSrvName ='prunsrv-i386.exe'}#4字节= 32位#64 {$ PrunSrvName ='prunsrv -amd64.exe'}#8字节= 64位,已作为解决方法进行了评论!!! 64 {$ PrunSrvName ='prunsrv-i386.exe'}#8字节= 64位
现在,卸载neo4j服务,安装它,然后启动该服务。
希望这对您有用。