2011-06-17 105 views
0

我有一个Maven项目结构是这样的:为什么这个类路径资源为空?

  • 的src/main/JAVA /测试/ App.java
  • 的src /主/资源/配置/ message.txt

内部应用程序的.java,我有这样一行:

InputStream is = Thread.currentThread() 
    .getContextClassLoader() 
    .getResourceAsStream("/config/message.txt"); 

我试着让我能找到#2和谷歌的资源的每一个变化,但它似乎总是当我返回空运行mvn exec:java -Dexec.mainClass=test.App。我在这里错过了什么?

+0

您是否已验证在构建的Jars中message.txt实际上是**?你可以将`jar`工具列表的输出转储到你的问题的编辑中吗?我认为有些人对Jar的确切结构感到困惑。我确定。 – 2011-06-17 13:22:50

回答

1

尝试:

InputStream is = test.App.class.getResourceAsStream("/config/message.txt"); 

或者干脆:

InputStream is = getClass().getResourceAsStream("/config/message.txt"); 
+0

/config/message.txt与test.App不在同一个包中... – PeterMmm 2011-06-17 12:54:47

+1

这就是为什么我在`/`前面加上路径的原因。否则,`test.App.class.getResourceAsStream()`将在`/ test/config/message.txt`中寻找(从* current * class目录开始)。 – 2011-06-17 13:16:28

0

你可以试试这个:

InputStream is = this.getClass().getResourceAsStream("/config/message.txt"); 
0

我敢打赌:

InputStream is = App.class. 
    getResourceAsStream("../../resources/config/message.txt"); 

我不明白你想用currentThread()在这里做什么。