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

Langage Java Discussion :

des messages d'erreurs avec mon code


Sujet :

Langage Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut des messages d'erreurs avec mon code
    salut j'ai des message d'erreur et je ne sais plus comment les enlever puis executer mon code avec les thread voila le code
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    package aa;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.io.*;
    import java.sql.*;
     
     
    class thread1
     {
     
       public static ArrayList methode() {
        ArrayList A = new ArrayList();
     
     
        Thread m1_IOThread = null;
        Thread m2_IOThread = null;
        Thread ATTEND = null;
     
     
     
           if (m1_IOThread == null) {
             m1_IOThread = new Thread() {
               public void run() {
                 try {
                   ArrayList s = calcule.methode();
                   System.out.println(s);
                 }
                 catch (Exception ex) {
                   System.out.println(ex);
                 }
     
               }
     
             };
             m1_IOThread.setPriority(Thread.MIN_PRIORITY);
             m1_IOThread.start();
           }
     
           if (m2_IOThread == null) {
             m2_IOThread = new Thread() {
               public void run() {
                 try {
                   ArrayList s = calcule.methode();
                   System.out.println(s);
                 }
                 catch (Exception ex) {
                 }
     
               }
             };
             m2_IOThread.setPriority(Thread.MIN_PRIORITY);
             m2_IOThread.start();
           }
     
           if (ATTEND == null) {
             ATTEND = new Thread() {
               public void run() {
                 while ( (m1_IOThread != null) && (m2_IOThread != null))
                        {
                   try {
                     this.sleep(100);
                   }
                   catch (Exception G) {}
                 }
     
                 ATTEND = null;
               }
             };
             ATTEND.setPriority(Thread.MIN_PRIORITY); // UI has most priority
             ATTEND.start();
           }
     
     
     
     
     
         return (A);
       }
     }

    et les trois message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "thread1.java": local variable m1_IOThread is accessed from within inner class; needs to be declared final at line 62, column 23
    "thread1.java": local variable m2_IOThread is accessed from within inner class; needs to be declared final at line 62, column 48
    "thread1.java": local variable ATTEND is accessed from within inner class; needs to be declared final at line 70, column 14

    les erreurs sur la lignes
    while ( (m1_IOThread != null) && (m2_IOThread != null))
    et la ligne
    ATTEND = null;


    merci de m'avoir m'aider

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bon réponse un peu bébête quoi, mais il te dis tout simplement de passer tes 3 variables en final enfin rajouter l'attibut final quoi

    Faut savoir lire les messages d'erreurs des fois, même pour un non-anglophone ce message me semble clair...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final Thread m1_IOThread = null;
    final Thread m2_IOThread = null;
    final Thread ATTEND = null;

  3. #3
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut merci pour ton aide mais ça marche pas car j'ai toujours les erreur aprés la modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cannot assign a value to final at lign26 sur la ligne 
    m1_IOThread = new Thread()

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Tu ne peux pas acceder à une variable locale à partir d'une inner class, sauf si celle ci est constante (ie final).

    Il faut que tu changes ta conception :
    1. soit tu définis des classes qui dérivent de Thread avec des attributs, chaque attribut étant initialisé (via le constructeur ou une méthode d'init) avec les variables locales.
    2. soit tu déclares des attributs m1_IOThread, m2_IOThread, etc ... dans ta classe principale.

  5. #5
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    mais je n'ai pas bien tout compris
    dans une autre classe je vais récupérer résultat de cette classe thread1
    par ArrayList A =thread1.methode();

  6. #6
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    j'ai trois thread qui font pas le meme progreme
    m1_IOThread et m2_IOThread exixute en parallele et récupérer résultat dans troisiéme thread ATTEND qui récupere résulta des deux thread premiers puis dans une autre classe je voulais récupérer résultat de thread ATTEND de la classe thread1
    par exemlpe la classe ArrayList A= thread1.methode();

    je n'ai pas bien compris pourquoi j'ai des mesages d'erreur

  7. #7
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    voila j'ai modifier mon code
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
     
    package aa;
    import java.util.ArrayList;
     
    class thread1 
     {
     
     public static ArrayList methode() {
    ArrayList A = new ArrayList();
    ArrayList B = new ArrayList();
    Thread m1_IOThread ;
    Thread ATTEND;
     
     
     
    m1_IOThread = new Thread() {
     
    public void run() {
                 try {
                  A.add("ulysse00");
            }
                 catch (Exception ex) {
                   System.out.println(ex);
                 }
     
               }
     
             };
             m1_IOThread.setPriority(Thread.MIN_PRIORITY);
             m1_IOThread.start();
     
             ATTEND = new Thread() {
                                      public void run() {
     
     
                                        while (m1_IOThread != null )
                                                {
                                          try {
                                            this.sleep(100);
                                          }
                                          catch (Exception G) {}
                                        }
                                        B.add(A);
                                      }
     
             };
             ATTEND.setPriority(Thread.MIN_PRIORITY); 
             ATTEND.start();
     
         return (B);
       }
     }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    et j'ai toujours des messsages d'erreurs 
     
     
     
     
     
    "thread1.java": local variable A is accessed from within inner class; needs to be declared final at line 19, column 15 
    "thread1.java": local variable m1_IOThread is accessed from within inner class; needs to be declared final at line 35, column 44 
    "thread1.java": local variable B is accessed from within inner class; needs to be declared final at line 42, column 37
    sur la lignes
    A.add("ulysse00");
    et
    B.add(A);

    et la ligne while (m1_IOThread != null )

    merci encore ,j'ai besoin que mon code fonctionne

  8. #8
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Citation Envoyé par ulysse031
    merci encore ,j'ai besoin que mon code fonctionne
    Un code qui fonctionne c'est pas mal, un code qu'on comprend c'est beaucoup mieux ... Tu fais une inner class sans savoir ce que tu fais.

    Quant aux conventions de nommage, on te l'a déjà dit pas mal de fois que ça serait bien de les respecter

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par chtig
    Un code qui fonctionne c'est pas mal, un code qu'on comprend c'est beaucoup mieux ... Tu fais une inner class sans savoir ce que tu fais.

    Quant aux conventions de nommage, on te l'a déjà dit pas mal de fois que ça serait bien de les respecter
    Et encore mieux il y a même une inner class dans une inner class, dan le style alambiqué on en fait pas mieux, un thread qui lance un autre thread, ça sent l'sapin tout çà.

    http://bruce-eckel.developpez.com/li...?chap=9&page=0

  10. #10
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut merci pour le lien mais vraiment je voulais bien que mon code marche comment le modifier

  11. #11
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut voila j'ai modifié le code par
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    package aa;
    import java.util.ArrayList;
     
    class thread1 
     {
     
     public static ArrayList methode() {
    final ArrayList A = new ArrayList();
    final ArrayList B = new ArrayList();
    final Thread m1_IOThread ;
    Thread ATTEND;
     
     
     
    m1_IOThread = new Thread() {
     
    public void run() {
                 try {
                  A=calcule.methode();
                   System.out.println(A);
            }
                 catch (Exception ex) {
                   System.out.println(ex);
                 }
     
               }
     
             };
             m1_IOThread.setPriority(Thread.MIN_PRIORITY);
             m1_IOThread.start();
     
             ATTEND = new Thread() {
                                      public void run() {
     
     
                                        while (m1_IOThread != null )
                                                {
                                          try {
                                            this.sleep(100);
                                          }
                                          catch (Exception G) {}
                                        }
     
                                        B.add(A);
    System.out.println(B);
                                      }
     
             };
             ATTEND.setPriority(Thread.MIN_PRIORITY); 
             ATTEND.start();
     
         return (B);
       }
     }


    un message d'erreur :"thread1.java": cannot assign a value to final variable A at line 19, column 11

    sur la ligne A=calcule.methode();

    aidez moi

  12. #12
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    bonsoir je voulais bien que vous m'aidez c'est urgent mes amis please

  13. #13
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par ulysse031
    un message d'erreur :"thread1.java": cannot assign a value to final variable A at line 19, column 11
    comme le dis le message d'erreur, tu ne peux pas assigner une valeur à une variable de type final. final ça veut dire qu'une fois la variable initialisée tu ne peux plus lui changer de valeur

    le mieux je pense est d'au lieu de faire des inner classes de faire des classes à part. Tu pourras par exemple donner ton arrayList en paramètre du constructeur. Tu galèreras moins je pense.

    Sinon tu peux aussi regarder du côté de l'interface Future qui permet de récupérer un résultat depuis l'exécution d'un thread.

  14. #14
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut
    je voulais bien utiliser les threads
    de cette façons

    class thread
    {
    public static ArrayList methode() {


    thread1 qui fait ArrayList A = calcule1.methode();
    thread2 qui fait ArrayList B=calcule.methode();
    les deux thread exicute en paralle
    puis
    thread3 qui fait
    while (thread1 !=null &&)
    {
    try {
    this.sleep(100);
    }
    catch (Exception G) {}
    }
    }
    ArrayList C =new Arraylist();
    C.add(A);
    C.add(B);


    return(c)
    }
    }




    please mes amis j'ai besoin de ça c'est urgent

  15. #15
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par ulysse031
    salut
    je voulais bien utiliser les threads
    de cette façons
    et bien regarde le lien je t'ai filé où alors cherche sur google, tu trouveras des exemples comme celui-ci

  16. #16
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci encore mais je voulais bien que vous m'aidez mon probleme est claire j'ai essayé de trouver la solution mais je m'avance pas

Discussions similaires

  1. message d'erreur dans mon code
    Par linda deb dans le forum Langage
    Réponses: 2
    Dernier message: 21/05/2012, 12h37
  2. Affichage des messages d'erreur sur mon serveur
    Par philippe57460 dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2008, 09h23
  3. Affichage des message d'erreurs avec Struts
    Par stujava dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/08/2007, 22h12
  4. TinyXml des ennuis avec mon code
    Par jalelouss dans le forum XML
    Réponses: 0
    Dernier message: 11/08/2007, 05h23
  5. Réponses: 22
    Dernier message: 28/01/2007, 22h00

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