Comment puis-je référencer une ressource dans Java?
J'ai besoin de lire un fichier dans mon code. Il habite ici:
C:\eclipseWorkspace\ProjectA\src\com\company\somePackage\MyFile.txt
Je l'ai mis dans un package source, de sorte que lorsque je créer un runnable jar file (Exportation->Runnable JAR file) il est inclus dans le pot. À l'origine, je l'ai eu dans la racine du projet (et j'ai aussi essayé un normal sous-dossier), mais l'exportation n'était pas compris dans le pot.
Si dans mon code je fais:
File myFile = new File("com\\company\\somePackage\\MyFile.txt");
le fichier jar correctement trouve le fichier, mais l'exécution en local (Exécuter en tant Qu'->Java de l'application Principale) jette un fichier non trouvé exception, car il s'attend à le trouver:
File myFile = new File("src\\com\\company\\somePackage\\MyFile.txt");
Mais cela échoue dans mon fichier jar. Donc ma question est, comment puis-je faire de ce concept de travail pour les deux cours d'exécution au niveau local et dans mon fichier jar?
source d'informationauteur Chris Knight | 2010-09-16
Vous devez vous connecter pour publier un commentaire.
Utilisation
chargeur de classe.getResourceAsStream
oude la Classe.getResourceAsStream
. La principale différence entre les deux est que laClassLoader
version utilise toujours un "absolu" chemin d'accès (dans le fichier jar ou quoi que ce soit) alors que leClass
version est par rapport à la classe elle-même, à moins que vous préfixe du chemin,/.Donc, si vous avez une classe
com.company.somePackage.SomeClass
etcom.company.other.AnyClass
(dans le même chargeur de classe comme la ressource), vous pouvez utiliser:ou
ou
Si j'ai mis je de fichier dans un fichier jar, il n'a travaillé que si et seulement si j'ai utilisé
Si j'ai utilisé un Fichier objet, il n'a jamais travaillé. J'ai eu aussi la FileNotFound exception. Maintenant, je reste avec l'objet InputStream.