OVH Cloud OVH Cloud

images dans un jar

8 réponses
Avatar
JoJo
bonjour,

je désire mettre mes images/icons dans le jar de mon application.
je les apelle donc ainsi dans mon source :

java.net.URL iconURL = JgpsIconsFactory.class.getClassLoader).
getResource(name);
if(iconURL != null){
return new ImageIcon(iconURL);
}

name vaut "icons/nom_image" et l'arborescence dans mon jar est :

monJar.jar
---pack1---sous package 1
---sous package 2
---icons

Mon prôblème est que lorsque je lance mon application avec l'IDE
(Eclipse) tout va bien, j'ai bien mes images mais lorsque je construit
mon jar et l'execute (InstallAnyWhere), aucune icone/image n'est
trouvée

merci beaucoup

JoJo

8 réponses

Avatar
jerome moliere
JoJo wrote:
bonjour,

je désire mettre mes images/icons dans le jar de mon application.
je les apelle donc ainsi dans mon source :

java.net.URL iconURL = JgpsIconsFactory.class.getClassLoader).
getResource(name);
if(iconURL != null){
return new ImageIcon(iconURL);
}

name vaut "icons/nom_image" et l'arborescence dans mon jar est :

monJar.jar
---pack1---sous package 1
---sous package 2
---icons

Mon prôblème est que lorsque je lance mon application avec l'IDE
(Eclipse) tout va bien, j'ai bien mes images mais lorsque je construit
mon jar et l'execute (InstallAnyWhere), aucune icone/image n'est
trouvée
fais un getResourceAsStream() et fais preceder ton chemin d'un /


jerome

Avatar
JoJo
jerome moliere wrote:

JoJo wrote:
bonjour,

je désire mettre mes images/icons dans le jar de mon application.
je les apelle donc ainsi dans mon source :

java.net.URL iconURL = JgpsIconsFactory.class.getClassLoader).
getResource(name);
if(iconURL != null){
return new ImageIcon(iconURL);
}

name vaut "icons/nom_image" et l'arborescence dans mon jar est :

monJar.jar
---pack1---sous package 1
---sous package 2
---icons

Mon prôblème est que lorsque je lance mon application avec l'IDE
(Eclipse) tout va bien, j'ai bien mes images mais lorsque je
construit mon jar et l'execute (InstallAnyWhere), aucune
icone/image n'est trouvée
fais un getResourceAsStream() et fais preceder ton chemin d'un /


jerome


Le prôblème c'est que je ne vois pas comment contruire mon ImageIcon
avec ce InputStream. J'ai chercher du InputStream et toutes les classes
qui hérite d'elle jusque dans les tableaux de bytes ...


Avatar
jerome moliere

Le prôblème c'est que je ne vois pas comment contruire mon ImageIcon
avec ce InputStream. J'ai chercher du InputStream et toutes les classes
qui hérite d'elle jusque dans les tableaux de bytes ...



un petit effort que diable :)

ImageIcon(byte[] imageData)
Creates an ImageIcon from an array of bytes which were read
from an image file containing a supported image format, such as GIF or JPEG.


extrait tout droit de la Javadoc...

Jerome

Avatar
JoJo
jerome moliere wrote:


Le prôblème c'est que je ne vois pas comment contruire mon
ImageIcon avec ce InputStream. J'ai chercher du InputStream et
toutes les classes qui hérite d'elle jusque dans les tableaux de
bytes ...



un petit effort que diable :)

ImageIcon(byte[] imageData)
Creates an ImageIcon from an array of bytes which were
read
from an image file containing a supported image format, such as GIF
or JPEG.


extrait tout droit de la Javadoc...

Jerome


oui j'ai bien vu :)
mais il faut que je définisse un tableau de byte. avec quelle taille ?
comment je peux savoir la taille de mon tableau? à moins que en Java
les tableaux soit réalloué automatiquement ?

suis-je fatiqué ? :)


Avatar
jerome moliere

oui j'ai bien vu :)
mais il faut que je définisse un tableau de byte. avec quelle taille ?
comment je peux savoir la taille de mon tableau? à moins que en Java
les tableaux soit réalloué automatiquement ?

suis-je fatiqué ? :)

on va dire cela :)

tu passes par un bytearrayoutputstream, une fois tout ton stream copie,
tu utilises une methode getBytes() ou un truc comme cela et hop t'as ton
tableau de bytes...

jerome

Avatar
JoJo
jerome moliere wrote:


oui j'ai bien vu :)
mais il faut que je définisse un tableau de byte. avec quelle
taille ?
comment je peux savoir la taille de mon tableau? à moins que en
Java
les tableaux soit réalloué automatiquement ?

suis-je fatiqué ? :)

on va dire cela :)

tu passes par un bytearrayoutputstream, une fois tout ton stream
copie, tu utilises une methode getBytes() ou un truc comme cela et
hop t'as ton tableau de bytes...

jerome


je dois etre trés bête alors parceque je ne sais vraiment pas quelle
direction tu prends ... :/

mais je vais persévérer dans cette voie (getRessourcesStream) ...

merci :)

JoJo


Avatar
jerome moliere
je dois etre trés bête alors parceque je ne sais vraiment pas quelle
direction tu prends ... :/

on va expliquer plus, c'etait peut etre rapide :)

1°) obtenir un stream avec le getresourceastream()
2°) lire ce flux (c'est de l'input) et remplir un bytearrayoutputstream
3°) obtenir les bytes (le tableau)
4°) construire ton imageicon
CQFD !!!
pas complique non?
a la louche 10lignes

Jerome

Avatar
JoJo
jerome moliere wrote:

je dois etre trés bête alors parceque je ne sais vraiment pas
quelle direction tu prends ... :/

on va expliquer plus, c'etait peut etre rapide :)

1°) obtenir un stream avec le getresourceastream()
2°) lire ce flux (c'est de l'input) et remplir un
bytearrayoutputstream 3°) obtenir les bytes (le tableau)
4°) construire ton imageicon
CQFD !!!
pas complique non?
a la louche 10lignes

Jerome


Bon ... le getRessources marche finalement. Voici pourquoi cela ne
marchait pas ... :

Les icones que l'infographiste m'a donné avaient pour extension .gif
voir .GIF pour certains. Dans mon code je les apelle avec .gif comme
extension.

Eclipse , à l'execution va les chercher comme dans un système de
fichier. C'est sous windows, il accepte le nom quel que soit la casse.

En mode application, la casse est respectée dans le jar, donc il me
jartait.

Voilà .... 2 jours la dessus...

merci beaucoup Jerome quand meme pour ton casse tête ;)

JoJo