web-dev-qa-db-fra.com

Comment ajouter un dossier de ressources à mon projet Java dans Eclipse

Je souhaite avoir un emplacement pour stocker mes fichiers image à utiliser dans mon projet Java (une classe très simple qui charge simplement une image sur un panneau). J'ai regardé partout et je ne trouve pas comment faire cela. Comment puis-je faire cela?

J'ai essayé d'ajouter un nouveau dossier au projet, d'ajouter un nouveau dossier de classe au projet et d'ajouter un nouveau dossier source au projet. Quoi que je fasse, je reçois toujours un IOException. Les dossiers disent toujours qu'ils se trouvent sur le chemin de génération, donc je ne sais pas quoi faire.

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: Quelque chose qui a fonctionné pour moi, et je ne sais pas pourquoi, a été d’ajouter le dossier main/res/ en tant que dossier de classe, puis de le supprimer. Je l'ai exécuté pendant que le /main/res/ faisait partie du chemin de génération en tant que dossier de classe et cela ne fonctionnait toujours pas. Quand je l'ai ajouté, j'ai eu un popup qui m'a dit quelque chose sur les filtres exclus. Mais quand j'ai supprimé le dossier des bibliothèques dans le chemin de construction, j'ai changé mon chemin de fichier en:

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

J'ai au moins cessé de recevoir la IOException. Je ne dois pas ajouter correctement l'image au panneau, car elle ne s'affiche pas, mais au moins, elle a trouvé le fichier (je pense).

33
redeagle47

Lorsque vous vous trouvez dans "Ajouter un dossier de ressources", Chemin de construction -> Configurer le chemin de construction -> Source (Onglet) -> Ajouter un dossier -> Créer un nouveau dossier enter image description here

ajoutez le fichier "my-resource.txt" dans le nouveau dossier . Puis dans votre 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();
62
Lautaro Cozzani

Pour répondre à votre question postée dans le titre de ce sujet ... 

Étape 1 -> Clic droit sur le projet Java, sélectionnez l’option "Propriétés"  Step 1--> Right Click on Java Project, Select the option "Properties"

Étape 2 -> Sélectionnez "Chemin de construction Java" dans le menu de gauche, assurez-vous que vous êtes sur l'onglet "Source", cliquez sur "Ajouter un dossier"  Select "Java Build Path" from the left side menu, make sure you are on "Source" tab, click "Add Folder"

Étape 3 -> Cliquez sur l'option "Créer un nouveau dossier ..." disponible en bas de la fenêtre  Click the option "Create New Folder..." available at the bottom of the window

Étape 4 -> Entrez le nom du nouveau dossier sous "ressources" puis cliquez sur "Terminer"  Enter the name of the new folder as "resources" and then click "Finish"

Étape 5 -> Vous pourrez maintenant voir le dossier "ressources" que vous venez de créer sous votre projet Java, cliquez sur "OK", puis cliquez à nouveau sur "OK".
 Now you'll be able to see the newly created folder "resources" under your Java project, Click "Ok", again Click "Ok"

Dernière étape -> Vous devriez maintenant pouvoir voir le nouveau dossier "ressources" dans votre projet Java
 Now you should be able to see the new folder "resources" under your Java project

10
mannedear

Après avoir ajouté un dossier de ressources, essayez ceci:

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

Essayez de donner le chemin complet pour la lecture de l'image.

Exemple image = ImageIO.read (nouveau fichier ("D: /work1/Jan14Stackoverflow/src/Strawberry.jpg"));

votre code ne produit pas d'exception après avoir indiqué le chemin complet . Si vous souhaitez simplement lire un fichier image en code Java ..__, reportez-vous à: - http://docs.Oracle.com/javase/ tutorial/2d/images/examples/LoadImageApp.Java

Si l'objet de votre classe est créé à la fin, votre code me convient et affiche l'image.

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

new PracticeFrame().add(panel);
0
jones j alapat