我有一个使用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文件?
谢谢, 雷蒙德
答案 0 :(得分:1)
这是我用来在这些情况下加载资源的东西,似乎大部分时间都在工作:
public static InputStream getResourceAsStream(String path) {
return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
}
你能检查一下,如果这对你的情况有帮助吗?
克服这个问题的另一个策略是我的评论中描述的那个:
“将配置文件复制到特定的绝对文件夹路径(即c:\ test),并将类路径更改为指向该文件夹(设置PR_CLASSPATH = MyService.jar;。; c:\ test)“