prunsrv服务与外部属性文件

时间:2017-10-04 15:41:20

标签: java procrun

我有一个使用NetBeans创建的java .jar文件。我使用apach 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文件?

谢谢, 雷蒙德

1 个答案:

答案 0 :(得分:1)

这是我用来在这些情况下加载资源的东西,似乎大部分时间都在工作:

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

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

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

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