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