java - getClass().getResource ("/") 在命令行中返回 null

标签 java maven jar classpath classloader

我正在尝试读取位于/src/main/resources/file.txt 的 maven 项目中的文件。

我在用

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

当通过 eclipse 运行时,url 对象获得正确的值。

但是,当我打包 jar 并在命令行中运行它时:

jar -cp myjar.jar SampleTest

它为“url”对象返回 null 并在下一行抛出 NullPointerException。

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

我哪里错了?

最佳答案

jar 文件中(通常)没有目录。因此它将返回 null


如果你想获取文件,你可以直接获取该资源:

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

或者简单地说:

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

关于java - getClass().getResource ("/") 在命令行中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116020/

相关文章:

java - maven > 混合 scala/Java 项目 > scala : error: value toScan is not a member of object org. apache.hadoop.hbase.protobuf.ProtobufUtil

java - 将 Jar 文件与 -classpath JAVA 组合

java - Tomcat 在处理带有身份验证 header 的 android 请求之前发送 400s

java - Spring Security 3 自定义身份验证要求....需要帮助!

java - 如何在jackson 2.8.1中访问TypeResolutionContext

java - 使用 mvn exec :java 时如何将 src/main/resources 添加到类路径

maven - swt 库无法解析

java - 在jar文件目录中创建文件夹

java - 使用 .bat 文件打开 jar 文件后跳过或自动回答问题

java - JPA查询: java. lang.ClassCastException : [Enum] cannot be cast to java. lang.Enum