getClass().getResource(“/”) returns null in command line

别等时光非礼了梦想. 提交于 2019-11-28 04:58:31

问题


I'm trying to read a file in my maven project at /src/main/resources/file.txt.

I'm using

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";

url object gets the correct value when this is run thru eclipse.

But, when I package the jar and run it in command line:

jar -cp myjar.jar SampleTest

It returns null for 'url' object and throws a NullPointerException in the next line.

I have openend my Jar file using file browser and checked. It has the 'file.txt' in "/" location inside the Jar.

Where am I going wrong ?


回答1:


There are (often) no directories inside jar files. Therefor it will return null.


If you want to get the file you could get that resource directly:

URL fileUrl = getClass().getResource("/file.txt");
...

Or simply:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");



回答2:


You should move that file into your CLASSPATH and get it like this:

InputStream is = this.getClass().getResourceAsStream("file.txt");


来源:https://stackoverflow.com/questions/11116020/getclass-getresource-returns-null-in-command-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!