How do I add a resources folder to my Java project in Eclipse

JavaEclipseFile IoResourcesProject Organization

Java Problem Overview


I want to have a place to store my image files to use in my Java project (a really simple class that just loads an image onto a panel). I have looked everywhere and cannot find how to do this. How do I do this?

I have tried adding a new folder to the project, adding a new class folder to the project, and adding a new source folder to the project. No matter what I do, I always get a IOException. The folders always say they are on the build path, so I'm not sure what to do.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class PracticeFrame extends JFrame{

private static BufferedImage image;
Thread thread;

public PracticeFrame() {
	super();
	setPreferredSize(new Dimension(640,480));
	setResizable(false);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	pack();
	setVisible(true);
}

public static void main (String[] args) {
	PracticeFrame pframe = new PracticeFrame();
	try {
		image = ImageIO.read(new File("/islands.png"));
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	JPanel panel = new JPanel() {
		@Override
		protected void  paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(image,0,0,null);
		}
	};
	
	panel.setBackground(Color.BLUE);
	panel.repaint();
	pframe.add(panel);
	
	
}


}

EDIT: Something that worked for me, and I have no idea why, was adding the main/res/ folder as a class folder and then removing it. I ran it while the /main/res/ was part of the build path as a class folder and it still didn't work. When i added it, i got a popup that told me something about excluded filters. But when i removed the folder from the libraries in the build path, and changed my file path to:

image = ImageIO.read(new File("src/main/res/islands.png"));

I at least stopped getting the IOException thrown. I must not be adding the image to the panel correctly, because it's not showing up, but at least it found the file (I think).

Java Solutions


Solution 1 - Java

When at the "Add resource folder", Build Path -> Configure Build Path -> Source (Tab) -> Add Folder -> Create new Folder enter image description here

add "my-resource.txt" file inside the new folder. Then in your code:

    InputStream res =
    Main.class.getResourceAsStream("/my-resource.txt");

    BufferedReader reader =
        new BufferedReader(new InputStreamReader(res));
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    reader.close();

Solution 2 - Java

To answer your question posted in the title of this topic...

Step 1--> Right Click on Java Project, Select the option "Properties" Step 1--> Right Click on Java Project, Select the option

Step 2--> Select "Java Build Path" from the left side menu, make sure you are on "Source" tab, click "Add Folder" Select

Step 3--> Click the option "Create New Folder..." available at the bottom of the window Click the option

Step 4--> Enter the name of the new folder as "resources" and then click "Finish" Enter the name of the new folder as

Step 5--> Now you'll be able to see the newly created folder "resources" under your java project, Click "Ok", again Click "Ok"
Now you'll be able to see the newly created folder

Final Step --> Now you should be able to see the new folder "resources" under your java project
Now you should be able to see the new folder

Solution 3 - Java

After adding a resource folder try this :

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("test.png");

try {
    image = ImageIO.read(input);
} catch (IOException e) {
    e.printStackTrace();
}

Solution 4 - Java

Build Path -> Configure Build Path -> Libraries (Tab) -> Add Class Folder, then select your folder or create one.

Solution 5 - Java

>>Right click on project >> Click on properties >> Java Build Path >> Source >> Add Folder

Solution 6 - Java

If you have multiple sub-projects then you need to add the resources folder to each project's run configuration class path like so:

class path

Ensure the new path is top of the entries and then the runtime will check that path first for any resources (before checking sub-paths)

Solution 7 - Java

Try To Give Full path for reading image.

Example image = ImageIO.read(new File("D:/work1/Jan14Stackoverflow/src/Strawberry.jpg"));

your code is not producing any exception after giving the full path. If you want to just read an image file in java code. Refer the following - http://docs.oracle.com/javase/tutorial/2d/images/examples/LoadImageApp.java

If the object of your class is created at end your code works fine for me and displays the image

// PracticeFrame pframe = new PracticeFrame();//comment this

new PracticeFrame().add(panel);

Solution 8 - Java

If aim is to create a resources folder parallel to src/main/java, then do the following:

Right Click on your project > New > Source Folder
Provide Folder Name as src/main/resources
Finish

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionredeagle47View Question on Stackoverflow
Solution 1 - JavaLautaro CozzaniView Answer on Stackoverflow
Solution 2 - JavamannedearView Answer on Stackoverflow
Solution 3 - JavaRami Del ToroView Answer on Stackoverflow
Solution 4 - JavaBHA BilelView Answer on Stackoverflow
Solution 5 - JavaMandeep Singh GillView Answer on Stackoverflow
Solution 6 - JavarupwebView Answer on Stackoverflow
Solution 7 - Javajones j alapatView Answer on Stackoverflow
Solution 8 - JavavinsinrawView Answer on Stackoverflow