File.exists()使用javaservice.exe返回false

时间:2016-01-22 17:21:11

标签: java file-exists java-service-wrapper

我有以下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

1 个答案:

答案 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操作”   进展'错误)。

我强烈建议阅读以上链接。

相关问题