2012-06-20 39 views
3

我试图在我的maven项目中读取文件/src/main/resources/file.txt。getClass()。getResource(“/”)在命令行中返回空值

我使用

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

URL对象获得时,这是运行直通月食正确的值。

但是,当我打包的jar和命令行运行它:

jar -cp myjar.jar SampleTest 

它返回null“URL”对象,并抛出下一行一个NullPointerException。

我使用文件浏览器打开了我的Jar文件并进行了检查。它在Jar中的“/”位置有'file.txt'。

我要去哪里错了?

+1

你应该试试'URL url = getCl驴()。getResource(“/ file.txt”);''字符串filePath = url.getPath();' – sergiofbsilva

回答

7

在jar文件里面通常没有目录。为此它将返回null


如果你想要得到的文件,你可以直接获得该资源:

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

或者干脆:

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

嗯,它在日食中工作正常。 “/”指向在eclipse中运行时的/ target/classes目录。 – user691197

+1

正如我在我的答案中所写:* jar文件内没有目录* - 例如您无法获取不存在的资源(目录)。当你从eclipse运行程序时,你的类路径指向一个文件路径/目录。在该环境中,您可以使用'Class.getResource'获取目录信息。 – dacwe

+0

是否有可能使用getResource(“/ dir”)通过调整项目pom.xml以某种方式在jar中获取目录URL? – user691197

2

你应该是文件移动到您的CLASSPATH,并得到它像这个:

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

'file.txt'在'/'中。 – dacwe

+0

文件似乎在类路径 –

+0

你假设这是在类路径中。您的JAR是否具有类路径条目的清单?如果不是,请添加一个。 – duffymo

相关问题