Erreur "cannot find symbol"

Fermé
loulouplume - Modifié par KX le 20/01/2017 à 20:41
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 22 janv. 2017 à 18:10
Bonjour,

J'ai une erreur dans mon programme et je ne comprend pas d'où ça vient.

Voici la ligne de code sur laquelle l'erreur se pose (ligne en gras):
if(!pu.getLog().contains(user.getNom()))


Erreur annoncée par Netbeans : "cannot find symbol". Et lorsque je clique sur le code qui pose problème, l'erreur change (petite ampoule rouge et non hexagone rouge) et affiche "Invert if"

Voici l'ensemble de mon code :
package Serveur;

/*


* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

/**
 *


* @author Lise GUEZENNEC

*/

import Client.PopUp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.ArrayList;

import Commun.Paquet;

public class Thread 
{
 private DatagramSocket ds;
 private ArrayList<Paquet> clients;
 private PopUp pu;

// Constructeur par défaut
 public Thread()
 {

}

// Constructeur avec des parametres
 public Thread(DatagramSocket ds, ArrayList<Paquet> client, PopUp pu)
 {
  this.ds = ds;
  this.clients = client;
  this.pu = pu;
 }

// Creation d'un nouveau client
 public Paquet connectionClient(InetAddress ip, int port) 
 {
        for (Paquet client : clients) 
        {
            if (client.getPort() == port && ip.equals(client.getIp())) 
            {
                return client; 
            }  
        }
        return null;
    }

// Creation d'une liste de clients
 public String clientConnecte() 
 {
        String listeClient = "2";
        for (Paquet client : clients) 
        {
         listeClient = listeClient + "#" + client.getIp().toString().substring(1) + "#" + client.getPort() + "#" + client.getNom();
        }
        return listeClient;
    }

// Lancement du Thread
    public void run() 
    {

try {
            // boolean actif = true;
            byte[] msg = new byte[256];
            DatagramPacket dp = new DatagramPacket(msg, msg.length);
            int i, port;
            InetAddress ip;
            Paquet exist;
            String entree, message, paquet, ip_client_destination, port_client_destination;

// Reception des informations envoyees par le client
            do {
                paquet = message = ip_client_destination = port_client_destination = "";
                ds.receive(dp); 
                port = dp.getPort();
                ip = dp.getAddress();
                entree = new String(dp.getData(), 0, dp.getLength());
                paquet = entree;
                switch (paquet.substring(0, 2)) 
                {

// Si le paquet commence par la marque "1#", alors il s'agit d'une nouvelle connexion
                    case "1#":
                        exist = connectionClient(ip, port);
                        if (exist == null) {
                            Paquet user = new Paquet();
                            user.setIp(ip);
                            user.setNom(paquet.substring(2));
                            user.setPort(port);
                            clients.add(user);
                            message = clientConnecte();

// Vérification du pseudo du client
                            // S'il n'est pas deja dans la liste des pseudos actuellement connectes, alors le pseudo est accepte et le client est connecte
 if(!pu.getLog().contains(user.getNom()))
                            {
                             pu.setPaquet(message);
                             pu.updateClientsEnLigne();


for (int j = 0; j < clients.size(); j++) 
                             {
                                 DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, clients.get(j).getIp(), clients.get(j).getPort());
                                 ds.send(pkgo);
                             }
                            }

// Si le pseudo est deja utilise > Affichage d'un message de marque "8#" au client en question pour lui demander de choisir un autre pseudo
                            else
                            {
                             message = "8#";
                             DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, user.getIp(), user.getPort());
                                ds.send(pkgo);
                            }
                        }
                        break;

// Si le paquet commence par la marque "5#" > Deconnexion
                    case "5#":
                        exist = connectionClient(ip, port);
                        if (exist != null) 
                        {
                            clients.remove(exist);
                            message = clientConnecte();
                            pu.setPaquet(message);
                            pu.updateClientsEnLigne();
                            for (int j = 0; j < clients.size(); j++) 
                            {
                                DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, clients.get(j).getIp(), clients.get(j).getPort());
                                ds.send(pkgo);
                            }
                        }
                        break;

// Si le paquet commence par la marque "3#" > Nouveau message envoye par un client
                    case "3#":
                        i = 2;
                        while (!("#".equals(paquet.substring(i, i + 1))) && (i < paquet.length())) 
                        {
                            ip_client_destination = ip_client_destination + paquet.substring(i, i + 1);
                            i++;
                        }
                        i++;
                        while (!("#".equals(paquet.substring(i, i + 1))) && (i < paquet.length())) 
                        {
                            port_client_destination = port_client_destination + paquet.substring(i, i + 1);
                            i++;
                        }
                        i++;

// Message envoye
                        message = "4#" + ip.toString().substring(1) + "#" + port + "#" + paquet.substring(i);
                        if ("999.999.999.999".equals(ip_client_destination)) {
                            if ("99999".equals(port_client_destination)) 
                            {
                                for (int j = 0; j < clients.size(); j++) 
                                {
                                    DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, clients.get(j).getIp(), clients.get(j).getPort());
                                    ds.send(pkgo);
                                }
                            }
                        } else {
                            InetAddress ip_destino = InetAddress.getByName(ip_client_destination);
                            DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, ip_destino, Integer.parseInt(port_client_destination));
                            ds.send(pkgo);
                        }
                        break;
                    default:
                        message = "aucun";
                        DatagramPacket pkgo = new DatagramPacket(message.getBytes(), message.getBytes().length, ip, port);
                        ds.send(pkgo);
                }   
            } 
            while (true);

} 
        catch (IOException | NumberFormatException e) 
        {
            System.out.println("Une exception est survenue : " + e.getMessage());
        }
    }

void start() {

}

String clientConnectes() {
            return null;

}

}



3 réponses

Fausse manipulation : je n'ai pas fini ma phrase...

Si quelqu'un pourrait m'aider, je lui en serait grandement reconnaissante car j'ai beau chercher, je ne comprend pas mon erreur...

Merci d'avance.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 janv. 2017 à 20:50
Bonjour,

Sans le reste de ton code c'est difficile de dire exactement ce qu'il manque dans les autres classes que l'on ne voit pas.

Mais a priori il te manquerait la méthode
public ArrayList<Paquet> getLog()
dans la classe Paquet.
0
Ha effectivement ça vient peut être de ça. Je modifie et je te redis si ça fonctionne. Merci pour ton aide en tout cas.
0
Malheureusement, cela n'a pas fonctionné. Je cherche encore...
0
J'ai trouvé : J'ai mis .equals au lieu de .contains et ça fonctionne.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
22 janv. 2017 à 18:10
Du coup, cela signifie que tu ne gère pas une liste mais un élément unique, ce qui est en contradiction avec le commentaire que tu avais mis...

// S'il n'est pas deja dans la liste des pseudos actuellement connectes, alors le pseudo est accepte et le client est connecte
if(!pu.getLog().contains(user.getNom()))
0