web-dev-qa-db-fra.com

Incorporation de ressources (images, bits sonores, etc.) dans un projet Java puis utilisez ces ressources

J'ai cherché une méthode d'intégration d'une ressource dans un Java (en utilisant Eclipse v3.6.0) puis en utilisant cette ressource intégrée dans un contrôle (par exemple, JLabel). I ont vu des méthodes de référencement de ressources à partir du système de fichiers. Une fois le projet développé, je voudrais publier l'application en tant qu'exécutable. Il convient de noter que ces exécutables seront déployés/lancés sur les plates-formes Windows, * NIX et Linux.

Je sais que cela peut être fait dans le monde Visual Studio, mais je ne sais pas très bien comment faire cela dans Java/Eclipse IDE. En guise de question secondaire, comment puis-je demander à Eclipse de créer le projet en tant qu'exécutable afin qu'il puisse être lancé?

Toute aide est grandement appréciée.

Mark

MISE À JOUR 1:

Basé sur réponse de BalusC , je voulais partager le code que j'ai pour résoudre mon problème. Mes cours sont sous le package "Viking.Test "puis j'ai placé le fichier image sous le package" Viking.Test.Resources ". Tout cela se fait dans Eclipse pour importer l'image dans le projet.

  1. J'ai importé l'image en cliquant avec le bouton droit sur le Projet -> Importer -> Général/Système de fichiers pour la source d'importation.
  2. Sélection du dossier contenant l'image à importer
  3. Sélectionné "Project/src/Viking/Test/Resources "pour le paramètre 'Into folder'
  4. N'a modifié aucune des options et a cliqué sur "Terminé"

Dans le fichier source, j'ai ajouté le code suivant pour insérer l'image dans un JLabel (LblLogo)

try
{
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream(
    "Viking/Test/Resources/MyImage.jpg");
  Image logo = ImageIO.read(input);
  LblLogo = new JLabel( new ImageIcon( logo ) );
  LblLogo.setBounds(20, 11, 210, 93);
  getContentPane().add(LblLogo);
}
catch ( IOException e ) {  }
29
lordhog

Placez simplement ces ressources dans la structure source/package et utilisez ClassLoader#getResource() ou getResourceAsStream() pour les obtenir sous la forme URL ou InputStream à partir du chemin de classe par le chemin d'accès complet du package.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...

Ou si elle se trouve dans le même package que la classe actuelle, vous pouvez également l'obtenir comme suit:

InputStream input = getClass().getResourceAsStream("image.gif");

Comme question secondaire, comment puis-je obtenir Eclipse pour créer le projet en tant qu'exécutable afin qu'il puisse être lancé.

Clic droit Java Projet> Exporter> Fichier JAR exécutable .

17
BalusC