我正在编写一个jruby应用程序,从Java jar中运行,负责更新用户机器上作为windows服务运行的另一个应用程序。我遇到问题的程序的相关部分如下:
- windows服务下载updater.jar程序,启动updater.jar,然后windows服务退出
- updater.jar运行并调用windows.bat文件来卸载windows服务。.bat文件位于windows_service_root\bin\目录中。.bat文件是通过ruby的Kernel#system()方法调用的,例如:system('windows_service_root\bin\uninstall_service.bat')
- system()返回后,我将用updater.jar带来的所有文件的更新副本覆盖windows_service_root\bin\中的每个文件,包括"uninstall_service.bat">
我的问题是,我间歇性地收到一个错误,即uninstall_service.bat仍在使用中,无法覆盖,尽管我预计当Kernel#system()退出时,启动的子进程应该已经完全退出。
jruby 1.6.7.2/Windows Server 2008/java 1.7.0_40-b43
提前感谢您在这个问题上提供的任何帮助。
确保您使用的是最新的JRubies,或者尝试执行Spoon.spawn
(使用勺子宝石)。。。支持Windows:https://github.com/headius/spoon/blob/master/lib/spoon.rb#L16
可能是一个错误。您应该将此作为问题提交到http://bugs.jruby.org.