web-dev-qa-db-ja.com

EclipseでJavaプロジェクトにリソースフォルダーを追加する方法

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がスローされるのを止めました。画像が表示されないため、画像をパネルに正しく追加してはいけませんが、少なくともファイルは見つかりました(私は思う)。

39
redeagle47

「リソースフォルダーの追加」で、ビルドパス->ビルドパスの構成->ソース(タブ)->フォルダーの追加->新しいフォルダーの作成 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();
68
Lautaro Cozzani

このトピックのタイトルに投稿された質問に答えるには...

ステップ1-> [Java Project]を右クリックし、[プロパティ]オプションを選択します Step 1--> Right Click on Java Project, Select the option "Properties"

ステップ2->左側のメニューから[Javaビルドパス]を選択し、[ソース]タブにいることを確認して、[フォルダーの追加]をクリックします 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」として新しいフォルダの名前を入力し、「Finish」をクリックします Enter the name of the new folder as "resources" and then click "Finish"

ステップ5->これで、Javaプロジェクトの下に新しく作成されたフォルダー「resources」が表示されます。「OK」をクリックし、もう一度「Ok」をクリックします
Now you'll be able to see the newly created folder "resources" under your Java project, Click "Ok", again Click "Ok"

最終ステップ->これで、Javaプロジェクトの下に新しいフォルダー「resources」が表示されるはずです。
Now you should be able to see the new folder "resources" under your Java project

11
mannedear

リソースフォルダーを追加した後、これを試してください:

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

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

画像を読むためのフルパスを与えてみてください。

例image = ImageIO.read(new File( "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);
0
jones j alapat