2012-09-11 5 views
1

Lorsque je compile et exécute mon programme dans Eclipse, il s'exécute sans exceptions. Mais quand je l'exporte vers un pot exécutable ou un pot normal, il ne trouve pas mon fichier de paramètres.NoSuchFileException dans .jar mais pas dans Eclipse

Mon chemin est:

String path= "src/settings/settings.ini"; 

En éclipse, il fonctionne sans exception, mais dans un bocal, il jette immédiatement l'exception.

Comment est-il possible de faire fonctionner le pot comme il est en éclipse?

+1

Cochez cette question: http://stackoverflow.com/questions/12090882/trouble-turning-java-project-into-jar-file – phsym

+1

* "il jette l'exception" * Quelle exception? Veuillez toujours copier/coller une sortie d'exception (la pile). –

Répondre

5

tandis qu'à l'intérieur jar le fichier est plus fichier physique, de sorte que vous devrez peut-être de le lire comme flux

getClassLoader().getResourceAsStream("settings/settings.ini"); 

considérant que settings.ini est sous classpath (exécution) au chemin d'accès spécifié

+0

Je trouve 'getResource (String)' pour une URL est non seulement plus fiable pour avoir accès à une [ressource intégrée] (http://stackoverflow.com/tags/embedded-resource/info) (en ce que le 'InputStream' retourné n'est généralement pas repositionnable), mais aussi plus court à taper. ;) –

+0

Merci! Fonctionne parfaitement! –

+0

Vous êtes les bienvenus :) –

0

Si le fichier ini est situé dans l'archive jar, lire comme ceci:

inputstream = getClass() 
      .getClassLoader() 
      .getResourceAsStream("settings/settings.ini"); 

Sinon, s'il est situé en dehors de votre archive jar, vous devez déplacer ou copier votre fichier ini dans ./settings/settings.ini (relativement au répertoire de travail actuel de votre application).

Questions connexes