Problème objetj ava
Absot
Messages postés
819
Statut
Membre
-
tarek_dotzero Messages postés 834 Statut Membre -
tarek_dotzero Messages postés 834 Statut Membre -
Bonjour, j'ai créer mon objet dans mon projet en java dans un ficher et j'aurais aimé le manipuler à travers d'autres fichiers mais ça me dit que mon objet n'est pas défini..
Comment je pourrais faire svp?
Comment je pourrais faire svp?
A voir également:
- Problème objetj ava
- Ava find - Télécharger - Divers Utilitaires
30 réponses
avec import NomDeTaClasse
Il faut que le fichier java NomDeTaClasse.java soit dans le même répertoire, où alors tu précises le chemin d'accès dans les options de ton éditeur/compilateur.
Il faut que le fichier java NomDeTaClasse.java soit dans le même répertoire, où alors tu précises le chemin d'accès dans les options de ton éditeur/compilateur.
Je viens de faire un "import PopClient;" et "import PopClient.java;" tout en haut de mon fichier mais ça ne fonctionne pas..
Il faut faire un import de la classe de l'objet ou de la classe dans laquelle je créé l'objet parce que je l'ai créé dans un fichier qui s'appelle Interface.java?
Il faut faire un import de la classe de l'objet ou de la classe dans laquelle je créé l'objet parce que je l'ai créé dans un fichier qui s'appelle Interface.java?
Il ne sera pas donc accessible:
1. S'il est dans le répertoire courant, il ne faut pas mettre import, cela ne sert à rien, à condition qu'il soit "public class" c'est à dire le nom de la classe est le même nom du fichier.
2. Si tu l'a défini dans une autre classe, par exemple "Interface.java" comme suit
PopClient ne sera pas accessible que par la classe Interface, donc il faut le mettre séparément.
C'est simple: crée un fichier PopClient.java et y copie le code de ta classe, mais attention il faut supprimer la déclaration du premier objet de la classe interface, sinon cette dernière aura des problème à distinguer entre les deux (fichier séparé et objet inclue)
1. S'il est dans le répertoire courant, il ne faut pas mettre import, cela ne sert à rien, à condition qu'il soit "public class" c'est à dire le nom de la classe est le même nom du fichier.
2. Si tu l'a défini dans une autre classe, par exemple "Interface.java" comme suit
public class Interface
{
}
class PopClient
{
}
PopClient ne sera pas accessible que par la classe Interface, donc il faut le mettre séparément.
C'est simple: crée un fichier PopClient.java et y copie le code de ta classe, mais attention il faut supprimer la déclaration du premier objet de la classe interface, sinon cette dernière aura des problème à distinguer entre les deux (fichier séparé et objet inclue)
J'ai tapé "import PopClient.java" et voici le message:
https://www.casimages.com/i/091031061601989598.jpg.html]
Comment on fait pour directement mettre l'image?
https://www.casimages.com/i/091031061601989598.jpg.html]
Comment on fait pour directement mettre l'image?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaie, cela doit marcher.
Dit bous qu'est ce que tu trouve, sinon, met le code et le message d'erreur (juste la déclaration des classes).
Dit bous qu'est ce que tu trouve, sinon, met le code et le message d'erreur (juste la déclaration des classes).
Je ne peux pas créer un fichier PopClient.java comme il existe déjà donc je mets un autre nom?
Ensuite je copie le code de Interface.java en enlevant l'instanciation, c'est tout?
Et après je fais quoi?
Je suis un peu nul..
Ensuite je copie le code de Interface.java en enlevant l'instanciation, c'est tout?
Et après je fais quoi?
Je suis un peu nul..
Un peu nul qui code ce qui semble être un client de messagerie? A moins de vouloir se foutre de nous ...
Bon reprenons ...
Déjà tous tes fichiers se trouve au même niveau dans l'arborescence Eclipse, donc l' "import" ne sert à rien.
En revanche en regardant la déclaration de "private int nombreMessage", tu fais direct "=pop.".
STOP !
En java ou autre langage tu ne peux pas utiliser une variable que tu n'as pas instancié, puisque tu écris "pop." alors que tu n'as même pas défini précédemment de quel type est pop. Un Entier? Une String?
Ensuite pour ton import, il est normal que ça ne passe pas. En effet tu as mis tes classes dans un package nommé "app"'. Même si c'est inutile, tu peux faire l'import via "import app.PopClient;" et roulé jeunesse.
Mais ton problème vient du fait que tu n'as pas déclaré de quel type est ta variable "pop".
Loulou.
Bon reprenons ...
Déjà tous tes fichiers se trouve au même niveau dans l'arborescence Eclipse, donc l' "import" ne sert à rien.
En revanche en regardant la déclaration de "private int nombreMessage", tu fais direct "=pop.".
STOP !
En java ou autre langage tu ne peux pas utiliser une variable que tu n'as pas instancié, puisque tu écris "pop." alors que tu n'as même pas défini précédemment de quel type est pop. Un Entier? Une String?
Ensuite pour ton import, il est normal que ça ne passe pas. En effet tu as mis tes classes dans un package nommé "app"'. Même si c'est inutile, tu peux faire l'import via "import app.PopClient;" et roulé jeunesse.
Mais ton problème vient du fait que tu n'as pas déclaré de quel type est ta variable "pop".
Loulou.
"Un peu nul qui code ce qui semble être un client de messagerie? A moins de vouloir se foutre de nous ... "
Je ne comprends pas trop, je suis étudiant et ce que je fais est une activité de cours..
Mon pop est déjà déclaré dans un Interface.java en tant que PopClient mais quand je fais un "import app.PopClient;", pop n'est toujours pas déclaré alors que si mais je voudrais juste le réutiliser pour continuer à le manipuler.. ?
Je ne comprends pas trop, je suis étudiant et ce que je fais est une activité de cours..
Mon pop est déjà déclaré dans un Interface.java en tant que PopClient mais quand je fais un "import app.PopClient;", pop n'est toujours pas déclaré alors que si mais je voudrais juste le réutiliser pour continuer à le manipuler.. ?
Je n'arrive plus à suivre, maintenant c'est un problème de déclaration?
Je vais essayer de donner un expemple plus complet:
3 fichiers:
1. PopClient.java
2. Interface.java
3. L'appelant: Min.java
il suffit de mettre les fichiers dans le même répertoire et de compiler Main.java
Est ce que c'est ça ce que tu cherches?
Je vais essayer de donner un expemple plus complet:
3 fichiers:
1. PopClient.java
public class PopClient{
}
2. Interface.java
public class Interface{
public PopClient pop;
public Interface()
{
pop = new PopClient();
}
}
3. L'appelant: Min.java
public class Main{
public static void main(String args[])
{
Interface interface = new Interface();
// Voilà une manipulation possible:
PopClient popLocal = interface.pop;
}
}
il suffit de mettre les fichiers dans le même répertoire et de compiler Main.java
Est ce que c'est ça ce que tu cherches?
Mon déroulement de mes évènements est que j'appelle Interface.java à partir de mon fichier principal qui s'appelle "ManagerPopClientGUI.java", donc l'interface se créé et ensuite je rentre tout mes logs et une fois qu'ils sont bien tous entré, je créé pop en faisant PopClient pop = new PopClient(); dans mon fichier Interface.java et j'appelle une nouvelle fenêtre dans mon fichier Menu.java.
Dans cette nouvelle fenêtre, j'ai donc un menu qui va me permettre de soit ouvrir un des messages de mon PopClient, soit d'en supprimer ou encore d'autres possibilités..
Donc si par exemple, je veux effacer un des messages, je fais appelle à une troisième fenêtre où je choisis quel message je veux supprimer et après (là où est mon problème), je voudrais bidouiller mon pop mais j'ai le problème qu'apparemment il n'est pas déclaré..
Voilà ce que j'ai:
https://www.casimages.com/i/091101023525768775.png.html
J'ai déclaré nombreMessage en int puisque la méthode listMessage(); retourne le nombre de message que contient le PopClient..
J'ai peut-être oublier de dire que l'on se connecte à un fichier executable "pop3ServerTest" où sont stocké tout les messages..
Dans cette nouvelle fenêtre, j'ai donc un menu qui va me permettre de soit ouvrir un des messages de mon PopClient, soit d'en supprimer ou encore d'autres possibilités..
Donc si par exemple, je veux effacer un des messages, je fais appelle à une troisième fenêtre où je choisis quel message je veux supprimer et après (là où est mon problème), je voudrais bidouiller mon pop mais j'ai le problème qu'apparemment il n'est pas déclaré..
Voilà ce que j'ai:
https://www.casimages.com/i/091101023525768775.png.html
J'ai déclaré nombreMessage en int puisque la méthode listMessage(); retourne le nombre de message que contient le PopClient..
J'ai peut-être oublier de dire que l'on se connecte à un fichier executable "pop3ServerTest" où sont stocké tout les messages..
La solution est simple:
Tu dois passer "pop" comme paramètre de constructeur:
et cela avant la destruction de l'objet Interface qui a créé ton "pop"
Si il faut passer par plusieurs fenêtres: tu peux le passer comme paramètre comme le nombre de fois que vous voulez, mais il faut donc créer une variable (attribut) PopClient dans chaque classe.
Tu dois passer "pop" comme paramètre de constructeur:
public Dele(PopClient pop){
nombreMessage = pop.listeMessage();
}
et cela avant la destruction de l'objet Interface qui a créé ton "pop"
Si il faut passer par plusieurs fenêtres: tu peux le passer comme paramètre comme le nombre de fois que vous voulez, mais il faut donc créer une variable (attribut) PopClient dans chaque classe.
J'ai cherché sur internet comment faire une variable attribut et j'ai remarquer qu'il fallait faire tout faire private static PopClient pop; à chaque fois?
Je l'ai donc fait partout sauf pour l'instanciation où j'ai fais static PopClient pop = new PopClient(host, port);..
Par contre, ça me met des erreurs partout maintenant comme j'ai fais public class Dele(PopClient pop) extends JFrame implements ActionListener{
.......
}
Voilà l'erreur que ça me met:
https://www.casimages.com/i/091101034209316369.png.html
Je l'ai donc fait partout sauf pour l'instanciation où j'ai fais static PopClient pop = new PopClient(host, port);..
Par contre, ça me met des erreurs partout maintenant comme j'ai fais public class Dele(PopClient pop) extends JFrame implements ActionListener{
.......
}
Voilà l'erreur que ça me met:
https://www.casimages.com/i/091101034209316369.png.html
La déclaration du paramètre dans le "constructeur" pas dans la classe, par exemple:
public class MaClasse
{
// voici le constructeur
public MaClasse(parametretype parametre)
{
}
}
Je l'ai fais, j'ai aussi déclaré un attributs de type PopClient donc mon code donne ça:
Le problème qu'il me reste est que quand je veux créer un objet de type Dele() donc en faisant Dele fenetreDele = new Dele();, j'ai un message qui me dit que mon constructeur Dele() est indéfini, j'ai donc essayé en rajoutant PopClient pop en paramètre et voici ce que ça me donne:
http://nsa10.casimages.com/img/2009/11/02//091102121649797342.png
public class Dele{
//Déclaration d'un attribut
PopClient pop;
//Constructeur
public Dele(PopClient pop){
...
}
}
Le problème qu'il me reste est que quand je veux créer un objet de type Dele() donc en faisant Dele fenetreDele = new Dele();, j'ai un message qui me dit que mon constructeur Dele() est indéfini, j'ai donc essayé en rajoutant PopClient pop en paramètre et voici ce que ça me donne:
http://nsa10.casimages.com/img/2009/11/02//091102121649797342.png
AAAhhh, Oui, Dele() est par défaut, mais que tu spécifies un paramètres, il ne sera pas possible d'appeler Dele(), pour cela il y a deux solutions:
1. Remplacer new Dele() par new Dele(null)
2. Créer un nouveau constructeur: Dele() sans paramètre, et avec le même code sauf que pour pop = pop; elle devient pop = null; ou même ignorée
1. Remplacer new Dele() par new Dele(null)
2. Créer un nouveau constructeur: Dele() sans paramètre, et avec le même code sauf que pour pop = pop; elle devient pop = null; ou même ignorée
J'ai préféré faire un Dele fenetreDele = new Dele(null);.
Donc maintenant, ça fonctionne sans problème? ^^
Si je fais des par exemple un pop.dele(int nombre) quelque part, ca fonctionne?
Donc maintenant, ça fonctionne sans problème? ^^
Si je fais des par exemple un pop.dele(int nombre) quelque part, ca fonctionne?
Si le passage est bien fait, et que l'appel du pop.dele(15) (pas int nombre) est fait dans le cas où tu passe un paramètre NON null, et beh pourquoi pas marcher?
De toute façon, si ça pause d'autre problèmes, met les dans cette discussion pour que nous puissions suivre.
De toute façon, si ça pause d'autre problèmes, met les dans cette discussion pour que nous puissions suivre.
J'ai des erreurs partout de type NullPointerException quand j'appelle j'utilise mon PopClient pop.. :/
Ca ne doit pas être la bonne méthode.. :(
Faut que ça fonctionne sinon je vais avoir une mauvaise note alors que j'y aurait passer du temps.. :/
Voilà ce que j'ai comme erreur et ce qui est bleuté est la ligne qui correspond, soi la 140 dans le message d'erreur alors que j'ai bien mis un attribut PopClient pop dans la classe..
https://www.casimages.com/i/091103124025481659.png.html
Ca ne doit pas être la bonne méthode.. :(
Faut que ça fonctionne sinon je vais avoir une mauvaise note alors que j'y aurait passer du temps.. :/
Voilà ce que j'ai comme erreur et ce qui est bleuté est la ligne qui correspond, soi la 140 dans le message d'erreur alors que j'ai bien mis un attribut PopClient pop dans la classe..
https://www.casimages.com/i/091103124025481659.png.html
Je pense que tu es assez fatigué, tu n'as pas bien dormis et bien se reposé depuis hier mon pote.
le NullPointerException est parceque tu as utiliser null comme paramètre puis tu as fait des appels genre: pop.dele(15), mais oui, dans ce cas pop est null et l'erreur est générée.
Je te conseil de garder le paramètre partout dans une valeur NON NULL pour éviter cette erreur
le NullPointerException est parceque tu as utiliser null comme paramètre puis tu as fait des appels genre: pop.dele(15), mais oui, dans ce cas pop est null et l'erreur est générée.
Je te conseil de garder le paramètre partout dans une valeur NON NULL pour éviter cette erreur