J'ai une convergence de besoins tournant autour de l'emplacement de mes fichiers de données. L'application actuelle contient tous les fichiers de classe et de données dans un fichier JAR (création d'un EDI Eclipse).Mon répertoire de travail, mes fichiers et mes urls
J'ai remarqué qu'il y a plusieurs façons dont les gens obtiennent cette information. J'ai besoin du chemin pour où mes fichiers d'image sont (graphiques). J'en ai également besoin comme URL pour utiliser l'appel de la boîte à outils.
Toolkit tk = frame.getToolkit();
image = tk.getImage(url.toFile());
Mais j'ai des problèmes avec la création de l'URL ou quelque chose. J'ai essayé quelques méthodes différentes. À ce stade, je garde les fichiers de données à côté des fichiers de classe dans le système de fichiers. J'ajoute une autre fonction à ce que je fais - dépouiller le répertoire/bin lors de l'exécution dans le débogage.
// in class BwServices at init:
try {
rootDataPath = BwServices.class.getProtectionDomain()
.getCodeSource().getLocation().getPath();
rootDataPath = URLDecoder.decode(rootDataPath, "UTF-8");
fileSystemAccess = true;
}
if(rootDataPath.endsWith("/bin/"))
rootDataPath = rootDataPath.substring(0, rootDataPath.length() - 4);
Plus tard ... j'obtenir des images et des appels ne fonctionnent pas, je ne sais pas pourquoi
J'ai essayé deux choses ....
// 1
String s = "file://" + rootDataPath + d.toString() + fileName;
url = frame.getClass().getResource(s);
// 2
try {
url = new URL(s);
} catch (MalformedURLException e) {
trace("getImage - can't get url: " + s);
e.printStackTrace();
}
L'un ou l'autre a des problèmes.
J'ai des appels pour obtenir des images de différents endroits. Le 'frame' est le cadre parent tout au long de l'exécution, dans la classe BwFrame.
Mon chemin est comme ça dans toute tentative ...
rootDataPath:/C:/Users/Markgm/Documents/DEV/espace de travail/BWP/
Donc, je suis à la recherche des moyens pour ouvrir FileInputStream ou des URLs pour le toolkit, pour les fichiers relatifs à l'emplacement du fichier de classe (et avec un truc pour le déboguer). Pour une application côté client, c'est ce que c'est. Un jour, je pourrais vouloir exécuter ceci comme une applet, mais je ne sais pas où les fichiers d'image devront être. (50x75 cartes à jouer et quelques images de bouton) Toute aide ou conseil est apprécié!
TIA, Mark
Eh bien, je sais que je peux le dire. L'appel getClass(). GetResource (String) qui renvoie une URL me pose un problème. Je suis en debug, ce qui place les fichiers de classe dans un sous-répertoire appelé 'bin'. Mais je vais après les fichiers image dans un autre sous-répertoire appelé gfx. Donc, je vois getResource ("gfx/s.png") ne fonctionne pas. getResource ("/ gfx/s.png") fonctionne. Cela fonctionne avec une barre oblique. Je ne peux pas l'obtenir pour travailler avec un nom de chemin valir commençant par la lettre de lecteur, comme renvoyé de in.init(), de class.getProtectionDomain() \t \t \t .getCodeSource(). GetLocation(). GetPath(); –
On dirait que vous rencontrez des problèmes avec votre IDE. Indépendamment des sous-répertoires où se trouvent vos images, elles doivent être ajoutées à votre classpath et getResource() fonctionnera correctement. – ddimitrov
"Indépendamment des sous-répertoires où vos images sont, ils devraient être ajoutés à votre classpath et getResource() fonctionnera bien" --------- Faites-vous cela avec tous vos sous-répertoires de ressources? –