1

我有一个使用 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 文件?

谢谢,雷蒙德

4

1 回答 1

1

这是我在这些情况下用来加载资源的方法,并且似乎在大多数情况下都有效:

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

你能检查一下,如果这对你的情况有帮助吗?

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

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

于 2017-10-04T15:51:01.743 回答