具有外部属性文件的 prunsrv 服务

prunsrv service with external properties file

我有一个使用 NetBeans 创建的 java.jar 文件。我正在使用 apaches procrun (prunsrv.exe) 将该 .jar 安装为 Windows 服务。我修改了代码以从 config.properties 文件中获取 属性。 我将 config.properties 文件添加到我的 .jar 文件所在的同一文件夹中。 我的代码如下:

Properties props = new Properties();
InputStream inputStream = MyService.class.getClassLoader().getResourceAsStream("config.properties");
props.load(inputStream);

在我的代码的最后一行,当我尝试启动服务时收到 NPE。我认为这是因为找不到文件。 我修改了 manifest.mf 如下:

Class-Path: .

我还尝试将 config.properties 复制到 "lib" 文件夹(我的 .jar 文件所在的子文件夹)。相同的结果。

我修改了安装服务的批处理文件中的"set PR_CLASSPATH"行如下:

set PR_CLASSPATH=MyService.jar;.

还是一样的 NPE。

安装服务后,如何让我的代码识别我的 config.properties 文件?

谢谢, 雷蒙德

这就是我在这些情况下用来加载资源的方法,并且似乎大部分时间都有效:

public static InputStream getResourceAsStream(String path) {
    return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
}

你能看看这对你的情况是否有帮助吗?

克服这个问题的另一种策略是我在评论中描述的策略:

"将配置文件复制到特定的绝对文件夹路径(即 c:\test)并将类路径更改为指向该文件夹(设置 PR_CLASSPATH=MyService.jar ;.;c:\test)"