Eclipse getResourceAsStream returning null

2020-02-05 14:04发布

问题:

I cannot get getResourceAsStream to find a file. I have put the file in the top level dir, target dir, etc, etc and have tried it with a "/" in front as well. Everytime it returns null.

Any suggestions ? Thanks.

public class T {
 public static final void main(String[] args) {

  InputStream propertiesIS = T.class.getClassLoader().getResourceAsStream("test.txt");

  System.out.println("Break");
 }
}

回答1:

Put your file "test.txt" into the same directory where the java file of your class is (same package). Then use

T.class.getResourceAsStream( "test.txt" );

This works, because eclipse automatically copies the file as a resource to the classpath. When using the command line, you have to do this by hand.



回答2:

You shouldn't need to add these files to the same directory to get it to work.

I was getting this symptom when I created a new Package and Source Folder to hold my junit tests. The tests would fail because getResourceAsStream was returning null.

Here's how to fix it:

Right-click the class (in my case, the new junit test class) in the Eclipse Project Explorer View

Build Path -> Configure Build Path -> Java Build Path -> Source Tab -> Add Folder

Select the folder that holds your files.



回答3:

Sometimes you need to tell eclipse explicitly what types of files to copy from the source folder to the distribution (classes) folder.

i have Eclipse SDK, Version: 3.7.1, Build id: M20110909-1335, Indigo and in this i did the following changes.

Project -> Properties -> Java Build Path -> Source (tab) -> Included (list item) -> Edit (button) to add */.txt to the existing */.java.



回答4:

Also make sure your file does not match any pattern of Preference>Java>Compiler>Building>OutputFolder>Filtered resources:.

For example, if you set *.txt in that field, you will not get test.txt to the build output.



回答5:

Putting my /resources/ folder into my /bin/ folder solved this issue for me.



回答6:

Old question but I just had the same problem and none of the answers worked for me (or I didn't understand them).

In Eclipse, refresh the project directory to make Eclipse aware that a new file has been added to resources. For this, right-click on the project (topmost) directory in the package explorer view, then hit "Refresh". The same if you edit an existing resource file from outside eclipse: refresh to make eclipse aware of the edits.