测试应用程序是否在Java中的jar文件中运行

时间:2015-01-26 05:30:21

标签: java resources

所以我一直在做一些研究,并找到了一个解决我的问题的黑客解决方案,这就是:我如何确定我在源文件夹中加载的资源是否是从jar文件中提取的,或者是在Netbeans autoconfigs的构建目录中?

这是我迄今为止所发现的: 我注意到如果我用

加载项目中的文件
File file = this.getClass().getClassLoader().getResource(somefile.txt);

的呼吁
System.out.println(File.getPath());

将输出这样的内容到控制台:

jar:path/to/file.txt

我可以用String函数测试

path.contains("jar");

获取一个布尔值,似乎告诉我资源是否在jar文件中。

我的问题我想是否有更好的解决方案,或者这是否是首选方法?

我愿意接受建议或任何答案

1 个答案:

答案 0 :(得分:1)

ClassLoader.getResource(String)返回一个网址,没有文件。您应该检查getProtocol()方法返回的内容,而不是将其转换为字符串并使用String.contains()调用:

URL url = this.getClass().getClassLoader().getResource("/somefile.txt");
if(null != url){    
    System.out.println(url.getProtocol());
}