我有以下Java代码来检查是否存在远程目录:“\\ server_web \\ Covers”
File CoversPathFile = new File(Options.CoversPath);
if (!CoversPathFile.getAbsoluteFile().exists()) throw new Exception();
当通过命令行或.Bat文件执行时,它运行良好, 但是如果我使用JavaService.exe将java类包装在Windows服务中,则File.exists()方法返回false;
如果使用本地路径,则不会出现此问题。
这是JavaService.exe错误吗?
JavaService.exe版本:2.0.10.0 平台:Windows 2008 Javaversión:8.0_40
答案 0 :(得分:1)
您必须指定当前的工作目录。因为您使用的是相对路径名称。从批处理开始,将启动路径设置为当前工作路径。因此,您可以使用-current选项提供路径:
-current current_dir(可选) - 用作服务当前工作目录的目录。如果指定了此参数,则全部 服务中的相对路径将相对于相对路径 指定目录。
另见:
http://javaservice.ow2.org/docs/devdocs/devcmds.html
更新:
如果要访问远程资源,则分配给该服务的用户没有访问该资源的权限。
要更改权限,您必须为服务分配特定用户。默认情况下,服务在本地服务用户帐户上运行。将此更改为适当的用户。
打开服务并在注册“登录”上更改用户。
或者使用javaservice.exe中的-user选项:
-user user_name(可选) - 指定运行服务时要使用的Windows域用户名(也需要密码) 参数已指定)。本地用户帐户指定为 。\ user_name而域帐户可以指定为 domain \ user_name或user_name @ domain(后一种形式 某些系统需要避免报告“I / O操作” 进展'错误)。
我强烈建议阅读以上链接。