2016-01-22 65 views
0

我有以下的Java代码,以检查是否存在远程目录返回false通过命令行或.Bat文件, 但是,如果我使用JavaService.exe将java类包装在Windows服务中,则File.exists()方法返回false;File.exists()使用javaservice.exe

如果使用本地路径,则不会发生该问题。

这是JavaService.exe错误?

JavaService.exe版本:2.0.10.0 平台:Windows 2008中 Java版本:8.0_40

回答

1

您必须指定一个当前工作目录。因为您正在使用相对路径名称。从批处理开始,使当前工作路径的开始路径。因此,您可以使用当前版的选项提供的路径:

- 电流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操作'错误)。

我强烈建议阅读上面的链接。

+0

\\ server_web \\封面不是相对路径。无论如何,我正在使用路径参数来定义一个额外的路径。 (-path extra_path(可选)) – josepmra

+0

通过在字符串中使用\\,您只有\并且在窗口上这是相对的。或者您的服务没有权限访问此资源。 – Marcinek