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.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
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.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
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:
Partager