IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Problème de respect de la casse sur les noms de fichier ressource


Sujet :

Eclipse Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut Problème de respect de la casse sur les noms de fichier ressource
    Bonjour,

    cela fait plusieurs fois que je me fait piéger sur le même problème:
    - J'intègre des fichiers dans les ressources de mon projet
    - Il y a parfois une petite erreur de Majuscule/Minuscule sur le nom du fichier ressource
    -> Le lancement de l'application dans Eclipse ne pose aucun problème, que ce soit en mode Déboguer, ou mode Exécuter

    - J'exporte le tout en un JAR exécutable
    -> Je lance l'application et là, c'est le drame... rien ne se passe

    - Du coup, je passe en mode console
    - Je lance le JAR, avec Java.exe
    -> Et là , la console me signale les erreurs lors du chargement de ressource sur tel ou tel fichier.

    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    btnAdmin.setIcon( new ImageIcon( getClass().getResource( "/BDD_MdPAdmin.png" )));
    Il se trouve que le fichier s'appelle en fait BDD_MdpAdmin.png (Difficile à détecter à l'oeil nu parmi 300 à 400 fichiers)

    Eclipse ne signale pas ce genre d'anomalie qui pourtant rendra l'application inutilisable. Y a-t-il une option à activer pour que cela soit signalé ?
    @ bientôt...

    Salut & @+ sur 3W!

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Le problème ne vient pas d'eclipse.
    Tu ne fait que lui ajouter des fichiers de ressources. Comment pourrait-il savoir que le fichier devrait être nommé "MdP" ou "Mdp" ???


    Le problème c'est que tant que ton application n'est pas packagé, elle recherche les ressources via le système de fichier local.
    Or sous Windows ce dernier est totalement insensible à la casse, ce qui fait que les différences de casse ne seront pas détectés...


    Mais une fois packagé dans un fichier jar, les différences de casses deviennent importante puisque le format ZIP est bien case-sensitive.


    Du coup tu n'as pas d'erreur en développement via eclipse, mais tu les as lorsque tu lances le fichier jar.



    Une solution serait de rajouter du code pour vérifier la casse dans ton code, par exemple en remplaçant tes getResource() par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	private static final boolean IS_WINDOWS = System.getProperty("os.name").toLowerCase().contains("windows");
     
    	public static URL getResource(Class<?> clazz, String resourceName) {
    		URL url = clazz.getResource(resourceName);
    		if (IS_WINDOWS && "file".equals(url.getProtocol())) {
    				try {
    					File returnedFile = new File(url.getFile());
    					File canonicalFile = new File(url.getFile()).getCanonicalFile();
    					if (!returnedFile.getName().equals(canonicalFile.getName())) {
    						throw new IllegalStateException("Case-sensitive error");
    					}
    				} catch (IOException e) {
    					throw new RuntimeException(e);
    				}
    		}
    		return url;
    	}


    a++

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Merci beaucoup pour cette information, et la solution qui l'accompagne.
    Je crois qu'il n'y a rien de plus à ajouter

    @ la prochaine...
    @ bientôt...

    Salut & @+ sur 3W!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regexpr sur les noms de fichiers, douleur, souffrance
    Par ManusDei dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/07/2012, 14h36
  2. Boucle sur les noms de fichier d'un répertoire
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/04/2012, 11h12
  3. Les accents sur les noms des fichiers passent mal
    Par fab53 dans le forum Langage
    Réponses: 3
    Dernier message: 04/01/2008, 15h05
  4. Réponses: 6
    Dernier message: 03/05/2006, 11h01
  5. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo