是否有人在使用JavaExe运行Windows服务时出现问题,是否有解决方案?
除了Service示例,Example3,Example5和Example23之外,JavaExe示例都有效。 在每种情况下,都会创建Windows服务,但任何启动该服务的尝试都会显示弹出错误消息:
“系统无法找到指定的文件。”
serivce有一个注册表项,其中包含以下内容:
名称:ImagePath
键入:REG_EXPAND_SZ
数据:“\ JavaExe \ JavaExe \ doc \ examples \ 3 - Service \ Example3.exe”__ Run Service __
如果我从命令行运行带有参数__RunService__的Example3.exe,那么Java进程会在崩溃之前启动并短暂运行。
这些示例在JavaExe下载中都是自包含的,因此很难看到如何丢失库。
背景:JavaExe(http://devwizard.free.fr/html/en/JavaExe.html)似乎实现了一种合理的方法,允许从作为服务运行的另一个Java程序调用Java应用程序。 Windows阻止服务访问桌面,因此JavaExe在服务和应用程序Java程序之间设置套接字连接,每个程序作为用户进程运行,如下所述: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683502(v=vs.85).aspx
Windows 7 x64(但在XP上以相同的方式失败[请参见下面的内容])
Java版本1.7.0_45
-
更新:
开发人员回复了我的电子邮件,并建议将32位和64位Java版本混淆不清 我把它理顺了。 Example3服务,从.exe和.jar文件中获取 JavaExe .zip下载(默认情况下都是32位),现在可以在WinXP(x86)上正确运行。
对于x64机器,必须使用软件包的compilx64.bat脚本重新编译jar文件。 (并使用文档中所述的x64版本的JaveExe.exe。)
我做了这些事情但是Example3服务仍然无法启动,错误, “系统无法找到指定的文件。”
从compilx64.bat构建的.jar文件大多与x86版本相同,但有一些 包含大几个字节的.class文件。我假设代码必须引用本机库?也许有些人没找到?但是哪些?
当我输入sc qc例子3时,我得到:
TYPE :: 10 WIN32_OWN_PROCESS
START_TYPE:2 AUTO_START
ERROR_CONTROL:1正常
BINARY_PATH_NAME:“[... filepath ...] \ JavaExe \ JavaExe \ doc \ examples \ 3 - Service \ Example3.exe”__ RunService__
LOAD_ORDER_GROUP:0
DISPLAY_NAME:JavaExe:示例3
相关信息:事件日志
SERVICE_START_NAME:LocalSystem
答案 0 :(得分:1)
答案:
Example3.exe的文件路径位于网络驱动器上。
要使Windows服务从网络驱动器运行要么不可能,要么需要相当大的扭曲。例如,见 Map a network drive to be used by a service
当我将所有内容移动到本地C:驱动器时,它可以工作。
感谢bb67提供了解决这个问题的提示。