如何在Eclipse中向我的Java项目添加资源文件夹

时间:2015-01-14 02:13:36

标签: java eclipse file-io resources project-organization

我希望有一个存储我的图像文件的地方,以便在我的Java项目中使用(一个非常简单的类,只是将图像加载到面板上)。我到处寻找,无法找到如何做到这一点。我该怎么做?

我尝试将新文件夹添加到项目中,向项目添加新的类文件夹,并向项目添加新的源文件夹。无论我做什么,我总是得到IOException。文件夹总是说它们在构建路径上,所以我不知道该怎么做。

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);


}


}

编辑:对我有用的东西,我不知道为什么,将main/res/文件夹添加为类文件夹,然后将其删除。我在/main/res/作为类文件夹的构建路径的一部分时运行它,它仍然无法正常工作。当我添加它时,我有一个弹出窗口告诉我有关排除过滤器的信息。但是当我从构建路径中的库中删除文件夹,并将我的文件路径更改为:

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

我至少停止了IOException抛出。我不能正确地将图像添加到面板,因为它没有显示,但至少它找到了文件(我认为)。

8 个答案:

答案 0 :(得分:64)

在"添加资源文件夹"时, 构建路径 - >配置构建路径 - >来源(标签) - >添加文件夹 - >创建新文件夹 enter image description here

添加" my-resource.txt"文件在新文件夹中。 然后在你的代码中:

    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();

答案 1 :(得分:9)

要回答您在本主题标题中发布的问题...

步骤1 - >右键单击Java Project,选择选项" Properties" Step 1--> Right Click on Java Project, Select the option "Properties"

步骤2 - >选择" Java Build Path"从左侧菜单中,确保您已开启"来源"选项卡,单击"添加文件夹" Select "Java Build Path" from the left side menu, make sure you are on "Source" tab, click "Add Folder"

步骤3 - >单击选项"创建新文件夹..."可在窗口底部找到 Click the option "Create New Folder..." available at the bottom of the window

步骤4 - >输入新文件夹的名称为" resources"然后单击"完成" Enter the name of the new folder as "resources" and then click "Finish"

步骤5 - >现在,您将能够看到新创建的文件夹" resources"在你的java项目下,点击"确定"再次点击"确定"
Now you'll be able to see the newly created folder "resources" under your java project, Click "Ok", again Click "Ok"

最后一步 - >现在您应该能够看到新文件夹" resources"在你的java项目下 Now you should be able to see the new folder "resources" under your java project

答案 2 :(得分:1)

右键单击项目>>单击属性>> Java构建路径>>源>>添加文件夹

答案 3 :(得分:0)

添加资源文件夹后,请尝试:

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

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

答案 4 :(得分:0)

尝试为阅读图像提供完整路径。

实施例  image = ImageIO.read(新文件(" D:/work1/Jan14Stackoverflow/src/Strawberry.jpg"));

在给出完整路径后,您的代码不会产生任何异常。 如果您只想在java代码中读取图像文件。 请参阅以下内容 - http://docs.oracle.com/javase/tutorial/2d/images/examples/LoadImageApp.java

如果你的类的对象是在最后创建的,那么你的代码可以正常工作并显示图像

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

new PracticeFrame().add(panel);

答案 5 :(得分:0)

构建路径->配置构建路径->库(Tab)->添加类文件夹,然后选择您的文件夹或创建一个。

答案 6 :(得分:0)

如果要创建与 src / main / java 平行的资源文件夹,请执行以下操作:

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

答案 7 :(得分:0)

如果您有多个子项目,则需要将资源文件夹添加到每个项目的运行配置类路径中,如下所示:

class path

确保新路径位于条目的顶部,然后运行时将首先检查该路径是否包含任何资源(在检查子路径之前)