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

avec Java Discussion :

Erreur de type java.lang.ArrayIndexOutOfBoundsException


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut Erreur de type java.lang.ArrayIndexOutOfBoundsException
    Bonjour, j'essaye de faire fonctionner un projet importé sans avoir de véritables connaissances du java. J'ai une erreur que j'ai retrouvée présentée plusieurs fois sur internet, apparemment liée à la taille d'un tableau. Néanmoins je ne vois quelle résolution appliquer.

    La portion de code incriminée :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    package fr.guehenneux.wordgen;
     
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Random;
    import java.util.stream.Stream;
     
    /**
     * Based on sciencetonnante video
     * https://www.youtube.com/watch?v=YsR7r2378j0
     * 
     * @author Jonathan Guéhenneux
     */
    public class WordGenerator {
     
    	private static final char NULL_CHARACTER = 0;
    	private static final Random RANDOM = new Random();
     
    	/**
             * @param arguments
             * @throws IOException
             */
    	public static void main(String[] arguments) throws IOException {
     
    		String dictionaryPath = arguments[0];
    		int windowSize = Integer.parseInt(arguments[1]);
    		int wordLength = Integer.parseInt(arguments[2]);
    		int wordCount = Integer.parseInt(arguments[3]);
     
    		WordGenerator wordGenerator = new WordGenerator(dictionaryPath, windowSize);
     
    		int generatedWordCount = 0;
     
    		while (generatedWordCount < wordCount) {
     
    			System.out.println(wordGenerator.generateRandomWord(wordLength));
    			generatedWordCount++;
    		}
    	}
    L'erreur :

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at fr.guehenneux.wordgen.WordGenerator.main(WordGenerator.java:31)
    J'ai bien sûr essayé d'augmenter la taille d'arguments (encore qu'il me semble que 0 devrait donner une taille flexible ?) et ça ne change rien.

    Voici aussi la source à partir de laquelle j'essaye d'importer le projet : https://github.com/Achaaab/WordGenerator

    Je vous remercie d'avance pour vos conseils.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonsoir,
    Qans avoir le message d'erreur ça va être dur de trouvé, mais je pense que ton problème vient du tableau arguments. Ton main a besoin de 3 arguments pour se lancer correctement. Il faut donc les passer en.ligne de comandes si tu lances ton appli en console.

  3. #3
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		String dictionaryPath = arguments[0];
    		int windowSize = Integer.parseInt(arguments[1]);
    		int wordLength = Integer.parseInt(arguments[2]);
    		int wordCount = Integer.parseInt(arguments[3]);
    Il y a déjà un problème au niveau des tests: il n'y en a pas.

    Avant d'utiliser une ressource chatouilleuse, c'est toujours mieux de vérifier qu'elle est capable de te fournir ce que tu veux. (En java la JVM est sympa, elle va te dire qu'il y a quelque chose qui ne va pas, dans d'autres langages, tu risques de continuer à chercher longtemps )

    Tu pourrais faire, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(arguments.length == 0 || arguments.length < 4)
    {
        		String dictionaryPath = arguments[0];
    		int windowSize = Integer.parseInt(arguments[1]);
    		int wordLength = Integer.parseInt(arguments[2]);
    		int wordCount = Integer.parseInt(arguments[3]);
    }
    else 
    {
        System.out.print("Chef, on a un problème: ");
        System.out.println("Il n'y a que "+ arguments.length + " au lieu de 4.");
    }
    Et là tu pourras commencer à diagnostiquer d'où vient le problème. (bon, dans ce cas, ça n'ira pas bien loin )

    EDIT:
    Qans avoir le message d'erreur ça va être dur de trouvé
    Le nom de l'exception levée est dans son titre.

  4. #4
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Ahh oui, pardon, je l'ajoute au premier message, je me disais bien que j'oubliais quelque chose...

    J'en ai profité pour essayer ce que tu proposes, Songbird, et cela génère une erreur différente.

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Incompatible operand types String[] and int
    dictionaryPath cannot be resolved to a variable
    Cannot make a static reference to the non-static field windowSize
    wordCount cannot be resolved to a variable
    wordLength cannot be resolved to a variable

    at fr.guehenneux.wordgen.WordGenerator.main(WordGenerator.java:31)
    Si j'ai bien compris, arguments est un tableau plus complexe que je ne l'aurais cru qui fait appel à un certain nombre d'éléments pas ou mal définis ?
    Je me suis peut-être lancé dans une entreprise plus complexe qu'attendu, j'espérais que la ressource fournie sur Github soit utilisable assez facilement.

  5. #5
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Saheyus Voir le message
    Ahh oui, pardon, je l'ajoute au premier message, je me disais bien que j'oubliais quelque chose...

    J'en ai profité pour essayer ce que tu proposes, Songbird, et cela génère une erreur différente.



    Si j'ai bien compris, arguments est un tableau plus complexe que je ne l'aurais cru qui fait appel à un certain nombre d'éléments pas ou mal définis ?
    Mes excuses, j'ai fait une faute dans l'exemple que je t'ai donné. (je l'ai écrit sans l'avoir compilé)

    Réessaies, tu ne devrais plus avoir d'erreur. (mon message a été édité)

  6. #6
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Voici le résultat :

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    dictionaryPath cannot be resolved to a variable
    Cannot make a static reference to the non-static field windowSize
    wordCount cannot be resolved to a variable
    wordLength cannot be resolved to a variable

    at fr.guehenneux.wordgen.WordGenerator.main(WordGenerator.java:44)
    Cela signale d'autres éléments du document, qui se situent juste après.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		WordGenerator wordGenerator = new WordGenerator(dictionaryPath, windowSize);
     
    		int generatedWordCount = 0;
     
    		while (generatedWordCount < wordCount) {
     
    			System.out.println(wordGenerator.generateRandomWord(wordLength));
    			generatedWordCount++;
    		}
    	}

  7. #7
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Là par contre je sèche.
    Généralement, on a ce genre d'erreurs lorsqu'une variable est utilisée dans un scope différent. (statique à dynamique, ou vice versa)

    Essaie de voir de ton côté comment tes attributs sont encapsulés.

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Songbird_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(arguments.length == 0 || arguments.length < 4)
    {
        		String dictionaryPath = arguments[0];
    		int windowSize = Integer.parseInt(arguments[1]);
    		int wordLength = Integer.parseInt(arguments[2]);
    		int wordCount = Integer.parseInt(arguments[3]);
    }
    else 
    {
        System.out.print("Chef, on a un problème: ");
        System.out.println("Il n'y a que "+ arguments.length + " argument(s) au lieu de 4.");
    }

    Mouais, ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(arguments.length >= 4) {// s'il y a au moins 4 arguments, alors on peut "lire" 4 arguments (au moins)
        		String dictionaryPath = arguments[0];
    		int windowSize = Integer.parseInt(arguments[1]);
    		int wordLength = Integer.parseInt(arguments[2]);
    		int wordCount = Integer.parseInt(arguments[3]);
    }
    else { // sinon il y a erreur
        System.out.print("Chef, on a un problème: ");
        System.out.println("Il n'y a que "+ arguments.length + " au lieu de 4.");
    }

    Citation Envoyé par Saheyus Voir le message
    Voici le résultat :

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    dictionaryPath cannot be resolved to a variable
    Cannot make a static reference to the non-static field windowSize
    wordCount cannot be resolved to a variable
    wordLength cannot be resolved to a variable

    at fr.guehenneux.wordgen.WordGenerator.main(WordGenerator.java:44)
    Le problème est qu'en ayant mis la lecture des arguments dans un bloc (celui du if), les variables déclarées dans le bloc sont devenues locales au bloc, donc non visibles en dehors (et donc non visibles après ).

    Il faudrait mettre le code entier de la méthode dans le bloc du if, puisque de toute manière, s'il n'y a pas les paramètres nécessaires pour faire tourner le programme, il ne faut pas le faire tourner, ni entièrement, ni partiellement.

    Donc :

    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
    18
    19
    20
    21
    22
    23
     
    if(arguments.length >= 4) {// s'il y a au moins 4 arguments, alors on peut "lire" 4 arguments (au moins)
         String dictionaryPath = arguments[0];
         int windowSize = Integer.parseInt(arguments[1]);
         int wordLength = Integer.parseInt(arguments[2]);
         int wordCount = Integer.parseInt(arguments[3]);
     
         WordGenerator wordGenerator = new WordGenerator(dictionaryPath, windowSize);
     
         int generatedWordCount = 0;
     
         while (generatedWordCount < wordCount) {
     
              System.out.println(wordGenerator.generateRandomWord(wordLength));
              generatedWordCount++;
     
        }
     
    }
    else { // sinon il y a erreur
        System.out.print("Chef, on a un problème: ");
        System.out.println("Il n'y a que "+ arguments.length + " argument(s) au lieu de 4.");
    }
    Quant à cette erreur : Cannot make a static reference to the non-static field windowSize. C'est probablement que lorque tu as vu qu'il y avait une erreur du type "windowSize cannot be resolved to a variable", tu as du chercher à la corriger en ajoutant un attribut à la classe, de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class WordGenerator {
    
         int windowSize
    
         public static void main(String[] args) throws IOException {
                  /**...**/
         }
    
    }
    Mais cette variable windowSize n'est visible depuis un code dans la méthode main(), parce que cette variable est un attribut d'instance (chaque instance de la classe a sa propre valeur pour cette variable), alors que la méthode main est static, et donc non attachée à une instance particulière.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Mouais, ce serait plutôt :
    Mes excuses, mon exemple était effectivement à côté de la plaque.

  10. #10
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    J'ai mis tout le bloc dans le if (j'aurais dû y penser)

    Et l'erreur sort : "Chef, on a un problème: Il n'y a que 0 au lieu de 4."

    Si j'ai bien compris, le tableau argument est défini dans "main(String[] arguments)" mais est défini avec une longueur de 0 ?

    Merci pour votre patience en tout cas

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le tableau String[] args de la méthode main permet de récupérer les paramètres passés à l'appel du programme. Sa taille dépend donc des paramètres qu'on passe au lancement du programme.

    On doit appeller le programme avec une commande du genre : java -cp . fr.guehenneux.wordgen.WordGenerator folder\dictionnarytruc.jesaispasquoi 12 18 42 (j'ai mis paramètre bidon évidemment). Si tu veux tester dans un IDE, il y a un endroit pour indiquer ces paramètres (sur Eclipse, il faut modifier la Run Configuration par exemple).

    Si tu veux tester, tu peux aussi te créer une classe pour ça, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class TestWordGenerator {
     
         public static void main(String[] args) {
              final String[] parameters = {"c:\dossiermachin\dossiertruc\fichierdictionnairebidule", "12", "18", "42"};
              fr.guehenneux.wordgen.WordGenerator.main(parameters);
         }
     
    }
    Et ensuite tu exécutes cette classe...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Je suis sur Eclipse, justement, mais je ne sais pas où chercher (dans run configurations) pour récupérer/ajouter cette information. Dans l'onglet arguments peut-être ?

    Je dois y faire la même chose qu'avec la console, c'est à dire ajouter "java -cp . fr.guehenneux.wordgen.WordGenerator" suivi d'un lien vers un fichier (il manque peut-être effectivement un fichier "dictionnaire", qui fournirait au logiciel une liste de mots et donc la longueur d'arguments) et de paramètres de variables ?

    A tout hasard, l'un des fichiers du Github n'est-il pas censé fournir ce genre d'informations ?

    Edit :

    J'ai essayé en faisant une nouvelle classe et en mettant un lien vers un vrai fichier (mais en laissant les arguments au pif car j'ignore quoi mettre)

    Description Resource Path Location Type
    Syntax error on token ".", @ expected after this token TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Syntax error, insert ")" to complete MethodDeclaration TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Syntax error, insert "Identifier (" to complete MethodHeaderName TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Syntax error, insert "SimpleName" to complete QualifiedName TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Dans l'onglet arguments de Run Configurations, en sélectionnant ta classe, tu mets les arguments dans la zone Program arguments, comme si c'était en console.
    Ensuite, tu ne pourras effectivement rien faire sans fichier dictionnaire.
    Mais avant tout il faut que ton programme compile ! Donc il faut que tu corriges les erreurs qu'on te signale.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    J'ai modifié le code pour résoudre les deux premières erreurs, mais tenter de résoudre les deux autres me cause des erreurs différentes.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package fr.guehenneux.wordgen;
    public class TestWordGenerator {
     
              final String[] parameters = {"E:\\Dropbox\\liste.de.mots.francais.frgut.txt", "12", "18", "42"};
              fr.guehenneux.wordgen.WordGenerator.@main(parameters));
     
     
    }
    Description Resource Path Location Type
    Syntax error, insert "Identifier (" to complete MethodHeaderName TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Syntax error, insert "SimpleName" to complete QualifiedName TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Exemple de modification pour la première de ces deux erreurs restants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package fr.guehenneux.wordgen;
    public class TestWordGenerator {
     
              final String[] parameters = {"E:\\Dropbox\\liste.de.mots.francais.frgut.txt", "12", "18", "42"};
              fr.guehenneux.wordgen.WordGenerator.@main(parameters)Identifier ();
     
     
    }
    Description Resource Path Location Type
    Return type for the method is missing TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    Syntax error on token(s), misplaced construct(s) TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem
    This method requires a body instead of a semicolon TestWordGenerator.java /WordGenerator/sources/fr/guehenneux/wordgen line 5 Java Problem

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le problème c'est simple l'arobase(@) qui n'a rien à faire dans ton code. Enlève-le tout simplement.
    La soi-disante correction que tu as faite n'est pas plus correcte syntaxiquement, au contraire, du coup c'est cette erreur qui est signalée en premier et la première ne l'est plus, c'est tout, mais ça ne corrige rien du tout.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Je n'ai fait que suivre les instructions relatives aux erreurs. Si je retire ça, ça me ramène au stade précédent.

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    C'est parce qu'il manque la déclaration de méthode. Voici la bonne syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class TestWordGenerator {
     
         public static void main(String[] args) {
              final String[] parameters = {"E:\\Dropbox\\liste.de.mots.francais.frgut.txt", "12", "18", "42"};
              fr.guehenneux.wordgen.WordGenerator.main(parameters);
         }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Merci, j'ai eu une erreur IOexception que j'ai corrigée, et la classe fonctionne désormais correctement. Elle sort des mots du dictionnaire (en premier argument) et on remarque bien que le troisième argument correspond à la longueur du mot et le quatrième au nombre de mots qui sortent. J'ignore à quoi sert le deuxième argument (Windowsize)

    Cependant, l'objectif du logiciel n'est pas de récupérer des mots spécifiques, mais d'en construire de nouveaux. Je suppose donc que cette classe ne fait pas fonctionner tout le script ? Est-ce dû à une erreur toujours présente dans le script ou au fait que la classe, structurellement, n'en fait pas fonctionner la totalité ?

  19. #19
    Membre régulier
    Homme Profil pro
    Touche à tout
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut
    Quelqu'un peut-il m'aider ? Je n'ai pas la sensation d'avoir beaucoup avancé dans la résolution du problème que j'exposais dans mon premier message.

  20. #20
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Saheyus Voir le message
    Quelqu'un peut-il m'aider ? Je n'ai pas la sensation d'avoir beaucoup avancé dans la résolution du problème que j'exposais dans mon premier message.
    Salut,

    Désolé, je n'avais pas vu ton dernier message pour ma part.

    Donc pour répondre à ton message précédent:

    Cependant, l'objectif du logiciel n'est pas de récupérer des mots spécifiques, mais d'en construire de nouveaux.
    Construire de nouveaux mots de quelle manière ? Comment t'y prends-tu pour que ton programme puisse générer des mots à partir de ceux que tu lui soumets ?

    Je suppose donc que cette classe ne fait pas fonctionner tout le script ? Est-ce dû à une erreur toujours présente dans le script ou au fait que la classe, structurellement, n'en fait pas fonctionner la totalité ?
    Nous parlerons, en Java, de programmes et non de scripts. (la nuance est anecdotique, m'enfin... )

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2016, 07h30
  2. Erreur : java.lang.ArrayIndexOutOfBoundsException
    Par the watcher dans le forum Langage
    Réponses: 10
    Dernier message: 22/09/2010, 18h56
  3. Erreur java lang.ArrayIndexOutOfBoundsException
    Par lerorodu51 dans le forum NetBeans
    Réponses: 8
    Dernier message: 04/06/2009, 19h17
  4. erreurs de type java.lang.NullPointerException
    Par laposte dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 06/04/2009, 19h45
  5. Erreur d'exécution de type java.lang.NoClassDefFoundError
    Par lelorf1983 dans le forum JDeveloper
    Réponses: 3
    Dernier message: 01/06/2007, 15h20

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