bonjours tout le monde
je suis entraint de developper un programme en java et en executant la class contenant le main je resoit un message d'erreur que j'ai pas pu connaitre la cause , est-ce que vous pouvez m'aider?
bonjours tout le monde
je suis entraint de developper un programme en java et en executant la class contenant le main je resoit un message d'erreur que j'ai pas pu connaitre la cause , est-ce que vous pouvez m'aider?
On n'a pas que ça à faire, de corriger ton programme, donc fais un effort:
- poste juste la partie du code intéressante
- poste le nom de l'exception, éventuellement sa "stacktrace" ainsi que le code se situant là où elle a été levée.
d'accord CyberChouan dèsolé pour le derangement
class FileTransporterClient:
class Messages:
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 package appli; import params.Messages; import vue.InterfaceClient; /** * Cree une fenetre client de FileTransporter * @author Arnaud Leymet * @author Vincent Nonn */ public class FileTransporterClient { /** * Fonction principale * @param args Arguments passes par la console : non pris en compte */ public static void main(String[] args) { // Message d'accueil System.out.println(Messages.get("01")); // Creation de la fenetre Client InterfaceClient interf = new InterfaceClient(); } }
class ConfigParams
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 package params; import java.util.MissingResourceException; import java.util.ResourceBundle; import vue.MessageErreur; /** * Cette classe comprend les 2 methodes de lecture de texte dans les fichiers de langues * @author Arnaud Leymet * @author Vincent Nonn */ public class Messages { private static final String BUNDLE_NAME = "lang.lang_"+ConfigParams.read("language");//$NON-NLS-1$ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); /** * Renvoit le texte correspondant a l'identifiant dans le fichier de langue courant * @param key Identifiant du texte a chercher dans le fichier de langue courant * @return Texte correspondant a l'identifiant dans le fichier de langue courant */ public static String get(String key) { try { String msg = RESOURCE_BUNDLE.getString(key); // Remplacement des vraiables internes msg = msg.replaceAll("#dev1", VarInternes.read("dev1")); msg = msg.replaceAll("#dev2", VarInternes.read("dev2")); msg = msg.replaceAll("#version", VarInternes.read("version")); msg = msg.replaceAll("#soft", VarInternes.read("soft")); return msg; } catch (MissingResourceException e) { MessageErreur.show("Missing Ressource Bundle !", "Missing Ressource"); return '!' + key + '!'; } } /** * Renvoit le texte correspondant a l'identifiant dans le fichier de langue 'lang' * @param lang Chaine de caracteres correspondant a un fichier de langue specifique * @param key Identifiant du texte a chercher dans le fichier de langue 'lang' * @return Texte correspondant a l'identifiant dans le fichier de langue 'lang' */ public static String get(String lang, String key) { final String OTHER_BUNDLE_NAME = "lang.lang_"+lang; final ResourceBundle OTHER_RESOURCE_BUNDLE = ResourceBundle.getBundle(OTHER_BUNDLE_NAME); try { return OTHER_RESOURCE_BUNDLE.getString(key); } catch (MissingResourceException e) { MessageErreur.show("Missing Ressource Bundle !", "Ressource manquante"); return '!' + key + '!'; } } }
le resultat de compilation
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146 package params; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Vector; import modele.OperationsFichier; import vue.MessageErreur; /** * Cette classe regroupe l'ensemble des methodes de lecture / ecriture des parametres du fichier 'params.ini' * @author Arnaud Leymet * @author Vincent Nonn */ public class ConfigParams { /** * Lit l'information correspondant a une variable dans le fichier de config "params.ini" * @param param Nom du parametre a chercher dans le fichier de configuration * @return Valeur prise par le parametre dans le fichier de configuration */ public static String read(String param){ String ret = null; File fichier = new File("params.ini"); BufferedReader lecture = null; String ligne = null; try{ lecture = new BufferedReader(new FileReader(fichier)); } catch(FileNotFoundException e){ String msg1, msg2; msg1 = Messages.get("ConfigParams.0"); msg1 = msg1.replaceFirst("%s", fichier.toString()); msg2 = Messages.get("ConfigParams.1"); msg2 = msg2.replaceFirst("%s", fichier.getName()); System.out.println(msg1); MessageErreur.show(msg2); } try { while ((ligne = lecture.readLine()) != null) if(ligne.startsWith(param)){ ret = ligne.substring(param.length()+1); } } catch (IOException e) { MessageErreur.show(""+e, Messages.get("err.1")); } try { lecture.close(); } catch (IOException e) { MessageErreur.show(""+e, Messages.get("err.1")); } return ret; } /** * Retourne le vecteur comprenant tous les fichiers de langues disponibles dans le repertoire "params" * @return Vecteur comprenant tous les fichiers de langues disponibles dans le repertoire "params" */ public static Vector getLanguages(){ Vector v = new Vector(); File[] tab = OperationsFichier.getListeFichiers(new File("lang"+File.separator)); if(tab==null) MessageErreur.show("No languages found !"); for(int i=0; i<tab.length; i++){ if(tab[i].toString().startsWith("lang"+File.separator+"lang_")){ String lang = tab[i].toString(); lang = lang.substring(10,12); v.add(lang+" - "+Messages.get(lang, "00")); } } return v; } /** * Sauvegarde l'ensemble des parametres de l'application dans le fichier de configuration * @param s Tableau de valeurs des parametres a enregistrer */ public static void saveParams(String[] s){ File fichier = new File("params.ini"); BufferedWriter ecriture = null; // Sauvegarde des anciens parametres en memoire String[] save = new String[9]; save[0] = ConfigParams.read("language"); save[1] = ConfigParams.read("serverport"); save[2] = ConfigParams.read("shared"); save[3] = ConfigParams.read("host"); save[4] = ConfigParams.read("clientport"); save[5] = ConfigParams.read("incoming"); save[6] = ConfigParams.read("buffer"); save[7] = ConfigParams.read("securesend"); save[8] = ConfigParams.read("unsecuresend_delay"); // Verification de prise en compte des modifications for(int i=0; i<9; i++) if(s[i]==null) s[i] = save[i]; // Ecriture dans le fichier de config try { ecriture = new BufferedWriter(new FileWriter(fichier)); } catch (IOException e) { MessageErreur.show(""+e, Messages.get("err.1")); } try { ecriture.write("[FileTransporter configuration file]"); ecriture.newLine(); ecriture.newLine(); ecriture.write("[general]"); ecriture.newLine(); ecriture.write("language="+s[0]); ecriture.newLine(); ecriture.write("buffer="+s[6]); ecriture.newLine(); ecriture.write("securesend="+s[7]); ecriture.newLine(); ecriture.write("unsecuresend_delay="+s[8]); ecriture.newLine(); ecriture.newLine(); ecriture.write("[server]"); ecriture.newLine(); ecriture.write("serverport="+s[1]); ecriture.newLine(); ecriture.write("shared="+s[2]+File.separator); ecriture.newLine(); ecriture.newLine(); ecriture.write("[client]"); ecriture.newLine(); ecriture.write("host="+s[3]); ecriture.newLine(); ecriture.write("clientport="+s[4]); ecriture.newLine(); ecriture.write("incoming="+s[5]+File.separator); ecriture.newLine(); } catch (IOException e) { MessageErreur.show(""+e, Messages.get("err.1")); } try { ecriture.close(); } catch (IOException e) { MessageErreur.show(""+e, Messages.get("err.1")); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Exception in thread "main" java.lang.ExceptionInInitializerError at appli.FileTransporterClient.main(FileTransporterClient.java:19) Caused by: java.lang.NullPointerException at params.Messages.get(Messages.java:25) at params.ConfigParams.read(ConfigParams.java:36) at params.Messages.<clinit>(Messages.java:15) ... 1 more
En cas de NullPointer, un réflexe s'impose: utiliser le debuggueur d'Eclipse.
Tu tentes visiblement d'invoquer une méthode sur un objet non initialisé (null).
Es-tu sûr que la méthode "String msg = RESOURCE_BUNDLE.getString(key);" lève bien une exception si "key" n'est pas trouvée? Est-ce que tu ne te retrouves pas plutôt avec "msg = null;" ce qui expliquerait ton problème.
normalement elle leve une exeption s'il ne trouve pas key
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 public static String get(String key) { try { String msg = RESOURCE_BUNDLE.getString(key); // Remplacement des vraiables internes msg = msg.replaceAll("#dev1", VarInternes.read("dev1")); msg = msg.replaceAll("#dev2", VarInternes.read("dev2")); msg = msg.replaceAll("#version", VarInternes.read("version")); msg = msg.replaceAll("#soft", VarInternes.read("soft")); return msg; } catch (MissingResourceException e) { MessageErreur.show("Missing Ressource Bundle !", "Missing Ressource"); return '!' + key + '!'; } }
j'ai debogguer le programme avec eclipse et ca donné ca:
D'après ton image ça donne simplement le même résultat, c'est ce que tu veux nous montrer ?
Si oui, c'est normal... le debugger sert à faire du pas à pas, une fois qu'on à placé au moins un point d'arrêt.
merci pour tout le monde pour leur aides
en fait la faute et loin d'etre dans le code , le fait que je travaille chaque fois sur un poste different ce qui m'oblige a transporter le projet ,et en l'important dans eclipse il se voit que j'importe pas les fichier.class, je sais pas exactement comment ca c'est passer mais maintenant ca marche
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager