我的Java代码如下:
InputStream in = getClass().getResourceAsStream("hello/say_hello.txt");
System.out.println ("InputStream = " + in + " and CWD is: " + System.getProperty("user.dir"));
IOUtils.copy(in, out);
我从
~/work/my_project
运行测试我正在加载的文件的完整路径是
~/work/my_project/hello/say_hello.txt
但是在运行上面的示例时,我得到:
InputStream = null and working directory is !~/work/my_project
java.lang.NullPointerException: null
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io-2.4.jar:2.4]
at myproject.addTestUser(Validation.java:157) ~[classes/:na]
现在,我的问题是:我该如何调试?
如何打印
getResourceAsStream()
扫描的路径以及如何向其中添加current-working-directory?注意:上面是更大代码库的简化版本,在这里共享整个项目是不可行的。
最佳答案
当前工作目录与getResource(AsStream)函数无关。后者适用于您的类路径,它可能包括开始目录,但更可能是仅JAR。如果在您的IDE中运行,则src / main / resources / *通常位于类路径中。