【问题标题】:File.exists() return false using javaservice.exeFile.exists() 使用 javaservice.exe 返回 false
【发布时间】:2016-04-29 09:30:34
【问题描述】:

我有以下 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 Java 版本:8.0_40

【问题讨论】:

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


    【解决方案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 Operation in 进度错误)。

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

    【讨论】:

    • \\server_web\\Covers 不是相对路径。无论如何,我正在使用 path 参数来定义一个额外的路径。 (-path extra_path (可选))
    • 通过在字符串中使用 \\ 只有 \ 并且在 Windows 上这是相对的。或者您的服务没有访问此资源的权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2013-05-19
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多