oui, vérifie aussi si il n'y a pas d'interdépendances entre tes jar. Comme tu charge chaque plugin dans un classloader séparé, si un jar utilise les classe d'un autre, il ne pourra pas être chargé.
Version imprimable
oui, vérifie aussi si il n'y a pas d'interdépendances entre tes jar. Comme tu charge chaque plugin dans un classloader séparé, si un jar utilise les classe d'un autre, il ne pourra pas être chargé.
J'ai fait la modification de code que tu me proposais. L'application ne se lance toujours pas en jws. De plus, je n'arrive pas à voir le message d'erreur car ma console java se ferme avant que je puisse voir le message d'erreur éventuel.
En ce qui concerne l'intedépendance de mes jars, monjar me servant de plugins utillise des classes présentent dans mon application principale.
De plus, en utilisant l'outil JavaEXE, je réussis à lancer l'application avec le dit plugin mais plus en jws
Dans la configuration de java, il y a moyen, si ma mémoire est bonne, de lui faire garder la console ouverte. Sinon rajoute autour de ton code dans ta méthode un
Code:
1
2
3
4
5
6 try{ .... } catch(Exception e){ e.printStackTrace(); Thread.sleep(60000); // une minute de pause pour lire! }
Ma console java s'affiche en me disant qu'elle lit bien les certificats de mes jars mais mon application ne se lance pas du tout et la console java se referme toute seule comme si mon application se fermait toute seule. Par contre quand j'enleve mon jar me servant de plugin du dossier plugin, l'application se lance bien. Mais sans mon jar de plugin bien sur
J'ai un doute tout à coup sur le début de mon manifest avant que je le signe. J'ai les 3 lignes suivantes :
A savoir que la classe principale de mon application est bien com.main.Main et que l'organisation de mes dossiers est la suivante :Code:
1
2
3
4 Manifest-Version: 1.0 Class-Path: ./lib/*.jar Main-Class: com.main.Main
J'ai un dossier dist qui contient mon Main.jar (jar généré par eclipse de mon application) , mon fichier jnlp, mon dossier plugins qui doit contenir mon jar me servant de plugin. Et enfin toujours dans le dossier dist, un dossier lib conteant les jar extérieurs que j'utilise pour mon application (lo log4j par exemple).
Ne me serais-je pas tromper par hasard dans les chemins d'accès pas hasard?
Je suis un peu perdu et je n'ai plus trop d'idées.:?
en jnlp, le classpath des jar n'est pas utilisé. Tu dois mentionner tous les jar dans le fichier jnlp. Donc l'entrée class-path n'a pas d'importance. Peut -tu remplacer le try/catch(Exception) que j'ai mis par un try/catch(Throwable), comme ça on capte tout.
Pour la console java, je ne connais pas de moyen de la garder en vie avec java webstart. Le Thread.sleep semble etre la seule solution :/
Voila j'ai remplacé par throwable et la modification du ClassLoader . L'application ne se lance pas et j'ai cette stacktrace :
Il semblerait que ce soit toujours la même. L'application semble ne pas vouloir se lancer tant que le jar n'arrive pas à etre lu. Le plugin jar semble ne pas "voir" les classes définies dans le jar de l'application principaleCode:
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 java.lang.NoClassDefFoundError: com/equipment/management_rule/ScheduleManagementRule at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.pluginsmanager.PluginsLoader.loadPlugins(PluginsLoader.java:91) at com.pluginsmanager.PluginsManager.loadPlugins(PluginsManager.java:97) at com.pluginsmanager.PluginsManager.<init>(PluginsManager.java:67) at com.main.Main.main(Main.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.runtime.Main.main(Unknown Source) at com.sun.javafx.runtime.main.Main.main(Main.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: com.equipment.management_rule.ScheduleManagementRule at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 32 more
il n'y a pas de monApplication.jar de référencé dans ton jnlp, tu ne l'aurais pas oublié?
Pardon, j'ai écrit monApplication.jar pour essayer d'expliquer quel était le jar. Le nom exact du jar est Main.jar que j'ai signé et qui s'appelle donc au final sMain.jar
et que donne?Code:jar tf sMain.jar
J'obtiens la stacktrace suivant:
Avec les png les icones que j'utilise dans mon applicationCode:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457 META-INF/MANIFEST.MF META-INF/SIGNATUR.SF META-INF/SIGNATUR.DSA .svn/entries .svn/prop-base/about.png.svn-base .svn/prop-base/add.png.svn-base .svn/prop-base/api.png.svn-base .svn/prop-base/ASIS.png.svn-base .svn/prop-base/asis_platform.png.svn-base .svn/prop-base/clear.png.svn-base .svn/prop-base/connection.png.svn-base .svn/prop-base/console.png.svn-base .svn/prop-base/copy.png.svn-base .svn/prop-base/down.png.svn-base .svn/prop-base/equipment.png.svn-base .svn/prop-base/equipments_manager.png.svn-base .svn/prop-base/equipment_run.png.svn-base .svn/prop-base/equipment_stop.png.svn-base .svn/prop-base/error.png.svn-base .svn/prop-base/exit.png.svn-base .svn/prop-base/hourglass.png.svn-base .svn/prop-base/info.png.svn-base .svn/prop-base/java.png.svn-base .svn/prop-base/load.png.svn-base .svn/prop-base/lock.png.svn-base .svn/prop-base/management_rule.png.svn-base .svn/prop-base/message.png.svn-base .svn/prop-base/message_error.png.svn-base .svn/prop-base/new.png.svn-base .svn/prop-base/parameters.png.svn-base .svn/prop-base/pause.png.svn-base .svn/prop-base/play.png.svn-base .svn/prop-base/plugin.png.svn-base .svn/prop-base/puce.png.svn-base .svn/prop-base/puce_2.png.svn-base .svn/prop-base/rec.png.svn-base .svn/prop-base/remove.png.svn-base .svn/prop-base/replay.png.svn-base .svn/prop-base/resume.png.svn-base .svn/prop-base/run.png.svn-base .svn/prop-base/save.png.svn-base .svn/prop-base/save_as.png.svn-base .svn/prop-base/select_all.png.svn-base .svn/prop-base/send.png.svn-base .svn/prop-base/settings.png.svn-base .svn/prop-base/stop.png.svn-base .svn/prop-base/Thumbs.db.svn-base .svn/prop-base/unlock.png.svn-base .svn/prop-base/up.png.svn-base .svn/prop-base/update.png.svn-base .svn/prop-base/warning.png.svn-base .svn/text-base/about.png.svn-base .svn/text-base/add.png.svn-base .svn/text-base/api.png.svn-base .svn/text-base/ASIS.png.svn-base .svn/text-base/asis_platform.png.svn-base .svn/text-base/clear.png.svn-base .svn/text-base/connection.png.svn-base .svn/text-base/console.png.svn-base .svn/text-base/copy.png.svn-base .svn/text-base/down.png.svn-base .svn/text-base/equipment.png.svn-base .svn/text-base/equipments_manager.png.svn-base .svn/text-base/equipment_run.png.svn-base .svn/text-base/equipment_stop.png.svn-base .svn/text-base/error.png.svn-base .svn/text-base/exit.png.svn-base .svn/text-base/hourglass.png.svn-base .svn/text-base/info.png.svn-base .svn/text-base/java.png.svn-base .svn/text-base/load.png.svn-base .svn/text-base/lock.png.svn-base .svn/text-base/management_rule.png.svn-base .svn/text-base/message.png.svn-base .svn/text-base/message_error.png.svn-base .svn/text-base/new.png.svn-base .svn/text-base/parameters.png.svn-base .svn/text-base/pause.png.svn-base .svn/text-base/play.png.svn-base .svn/text-base/plugin.png.svn-base .svn/text-base/puce.png.svn-base .svn/text-base/puce_2.png.svn-base .svn/text-base/rec.png.svn-base .svn/text-base/remove.png.svn-base .svn/text-base/replay.png.svn-base .svn/text-base/resume.png.svn-base .svn/text-base/run.png.svn-base .svn/text-base/save.png.svn-base .svn/text-base/save_as.png.svn-base .svn/text-base/select_all.png.svn-base .svn/text-base/send.png.svn-base .svn/text-base/settings.png.svn-base .svn/text-base/stop.png.svn-base .svn/text-base/Thumbs.db.svn-base .svn/text-base/unlock.png.svn-base .svn/text-base/up.png.svn-base .svn/text-base/update.png.svn-base .svn/text-base/warning.png.svn-base about.png add.png api.png ASIS.png asis_platform.png clear.png com/.svn/entries com/.svn/entries com/.svn/entries com/configuration/.svn/entries com/configuration/.svn/prop-base/ConfigurationFileFilter.class.svn-base com/configuration/.svn/prop-base/ConfigurationHandler.class.svn-base com/configuration/.svn/text-base/ConfigurationFileFilter.class.svn-base com/configuration/.svn/text-base/ConfigurationHandler.class.svn-base com/configuration/ConfigurationFileFilter.class com/configuration/ConfigurationHandler.class com/controler/.svn/entries com/controler/.svn/prop-base/PluginsManagerControler.class.svn-base com/controler/.svn/text-base/PluginsManagerControler.class.svn-base com/controler/PluginsManagerControler.class com/equipment/.svn/entries com/equipment/.svn/prop-base/Equipment.class.svn-base com/equipment/.svn/text-base/Equipment.class.svn-base com/equipment/api/.svn/entries com/equipment/api/.svn/prop-base/EquipmentDriver.class.svn-base com/equipment/api/.svn/text-base/EquipmentDriver.class.svn-base com/equipment/api/EquipmentDriver.class com/equipment/connection/.svn/entries com/equipment/connection/.svn/prop-base/AbstractConnection.class.svn-base com/equipment/connection/.svn/prop-base/LocalThreadFactory.class.svn-base com/equipment/connection/.svn/text-base/AbstractConnection.class.svn-base com/equipment/connection/.svn/text-base/LocalThreadFactory.class.svn-base com/equipment/connection/AbstractConnection.class com/equipment/connection/data/DefaultStringParameter.class com/equipment/connection/data/NonEmptyStringParameter.class com/equipment/connection/data/StatusParameter.class com/equipment/connection/jms/data/AcknowledgeModeParameter.class com/equipment/connection/jms/data/BrokerURLParameter.class com/equipment/connection/jms/data/SessionTypeParameter.class com/equipment/connection/jms/JMSClient.class com/equipment/connection/listener/ConnectionListener.class com/equipment/connection/listener/JMSClientListener.class com/equipment/connection/listener/MultiClientsListener.class com/equipment/connection/listener/RunnableConnectionListener.class com/equipment/connection/listener/SingleClientListener.class com/equipment/connection/LocalThreadFactory.class com/equipment/connection/tcpip/.svn/entries com/equipment/connection/tcpip/server/.svn/entries com/equipment/connection/tcpip/server/.svn/prop-base/Client.class.svn-base com/equipment/connection/tcpip/server/.svn/prop-base/Server.class.svn-base com/equipment/connection/tcpip/server/.svn/text-base/Client.class.svn-base com/equipment/connection/tcpip/server/.svn/text-base/Server.class.svn-base com/equipment/connection/tcpip/server/Client.class com/equipment/connection/tcpip/server/Server.class com/equipment/connection/tcpip/singleclient/data/HostAdressParameter.class com/equipment/connection/tcpip/singleclient/SingleClient.class com/equipment/data/ColorsParameter.class com/equipment/data/NameParameter.class com/equipment/Equipment.class com/equipment/management_rule/.svn/entries com/equipment/management_rule/.svn/prop-base/ManagementRule.class.svn-base com/equipment/management_rule/.svn/prop-base/ScheduleManagementRule.class.svn-base com/equipment/management_rule/.svn/text-base/ManagementRule.class.svn-base com/equipment/management_rule/.svn/text-base/ScheduleManagementRule.class.svn-base com/equipment/management_rule/ManagementRule.class com/equipment/management_rule/ScheduleManagementRule.class com/equipment/message/.svn/entries com/equipment/message/.svn/prop-base/AbstractMessage.class.svn-base com/equipment/message/.svn/text-base/AbstractMessage.class.svn-base com/equipment/message/AbstractMessage.class com/equipment/message/builder/JMSMessageBuilder.class com/equipment/message/builder/MessageBuilder.class com/equipment/message/builder/TCPIPMessageBuilder.class com/equipment/message/decoder/MessageDecoder.class com/equipment/parameter/.svn/entries com/equipment/parameter/.svn/prop-base/BooleanParameter.class.svn-base com/equipment/parameter/.svn/prop-base/ByteParameter.class.svn-base com/equipment/parameter/.svn/prop-base/EnumParameter.class.svn-base com/equipment/parameter/.svn/prop-base/FloatParameter.class.svn-base com/equipment/parameter/.svn/prop-base/IntegerParameter.class.svn-base com/equipment/parameter/.svn/prop-base/LongParameter.class.svn-base com/equipment/parameter/.svn/prop-base/Parameter.class.svn-base com/equipment/parameter/.svn/prop-base/ShortParameter.class.svn-base com/equipment/parameter/.svn/prop-base/StringParameter.class.svn-base com/equipment/parameter/.svn/text-base/BooleanParameter.class.svn-base com/equipment/parameter/.svn/text-base/ByteParameter.class.svn-base com/equipment/parameter/.svn/text-base/EnumParameter.class.svn-base com/equipment/parameter/.svn/text-base/FloatParameter.class.svn-base com/equipment/parameter/.svn/text-base/IntegerParameter.class.svn-base com/equipment/parameter/.svn/text-base/LongParameter.class.svn-base com/equipment/parameter/.svn/text-base/Parameter.class.svn-base com/equipment/parameter/.svn/text-base/ShortParameter.class.svn-base com/equipment/parameter/.svn/text-base/StringParameter.class.svn-base com/equipment/parameter/BooleanParameter.class com/equipment/parameter/ByteParameter.class com/equipment/parameter/data/BooleanType.class com/equipment/parameter/EnumParameter.class com/equipment/parameter/FloatParameter.class com/equipment/parameter/IntegerParameter.class com/equipment/parameter/LongParameter.class com/equipment/parameter/Parameter.class com/equipment/parameter/ShortParameter.class com/equipment/parameter/StringParameter.class com/equipment/plugin/.svn/entries com/equipment/plugin/.svn/prop-base/Plugin.class.svn-base com/equipment/plugin/.svn/text-base/Plugin.class.svn-base com/equipment/plugin/Plugin.class com/gui/.svn/entries com/gui/.svn/prop-baseGUI.class.svn-base com/gui/.svn/text-baseGUI.class.svn-base com/guiGUI.class com/gui/classesFX/menu/default.css com/gui/classesFX/menu/Menu$1.class com/gui/classesFX/menu/Menu$_SBECL.class com/gui/classesFX/menu/Menu.class com/gui/classesFX/menu/MenuApplication$1.class com/gui/classesFX/menu/MenuApplication$2.class com/gui/classesFX/menu/MenuApplication$3.class com/gui/classesFX/menu/MenuApplication$4.class com/gui/classesFX/menu/MenuApplication$5.class com/gui/classesFX/menu/MenuApplication$6.class com/gui/classesFX/menu/MenuApplication$7.class com/gui/classesFX/menu/MenuApplication$8.class com/gui/classesFX/menu/MenuApplication$9.class com/gui/classesFX/menu/MenuApplication.class com/gui/classesFX/menu/MenuBar$1.class com/gui/classesFX/menu/MenuBar$_SBECL.class com/gui/classesFX/menu/MenuBar.class com/gui/classesFX/menu/MenuBar.css com/gui/classesFX/menu/MenuItem$1.class com/gui/classesFX/menu/MenuItem$1ActionListener$anon1.class com/gui/classesFX/menu/MenuItem$_SBECL.class com/gui/classesFX/menu/MenuItem.class com/gui/classesFX/Menu$1.class com/gui/classesFX/Menu$_SBECL.class com/gui/classesFX/Menu.class com/gui/classesFX/MenuBar$1.class com/gui/classesFX/MenuBar$_SBECL.class com/gui/classesFX/MenuBar.class com/gui/classesFX/MenuItem$1.class com/gui/classesFX/MenuItem$1ActionListener$anon1.class com/gui/classesFX/MenuItem$_SBECL.class com/gui/classesFX/MenuItem.class com/gui/classesFX/SplitPane/JFXPanelCentral.class com/gui/classesFX/SwingFileChooser/SwingFileChooserFX$1.class com/gui/classesFX/SwingFileChooser/SwingFileChooserFX$SwingFileChooser$1.class com/gui/classesFX/SwingFileChooser/SwingFileChooserFX$SwingFileChooser.class com/gui/classesFX/SwingFileChooser/SwingFileChooserFX.class com/gui/classesFX/tree/TreePanelFX.class com/gui/consoles/.svn/entries com/gui/consoles/.svn/prop-base/ConsolesPanel$1.class.svn-base com/gui/consoles/.svn/prop-base/ConsolesPanel$2.class.svn-base com/gui/consoles/.svn/prop-base/ConsolesPanel.class.svn-base com/gui/consoles/.svn/text-base/ConsolesPanel$1.class.svn-base com/gui/consoles/.svn/text-base/ConsolesPanel$2.class.svn-base com/gui/consoles/.svn/text-base/ConsolesPanel.class.svn-base com/gui/consoles/ConsolesPanel$1.class com/gui/consoles/ConsolesPanel$2.class com/gui/consoles/ConsolesPanel.class com/gui/dialog/.svn/entries com/gui/dialog/.svn/prop-base/AboutDialog$1.class.svn-base com/gui/dialog/.svn/prop-base/AboutDialog.class.svn-base com/gui/dialog/.svn/prop-base/EquipmentJavadocDialog.class.svn-base com/gui/dialog/.svn/prop-base/RecordScenarioDialog$1.class.svn-base com/gui/dialog/.svn/prop-base/RecordScenarioDialog.class.svn-base com/gui/dialog/.svn/prop-base/UpdatingDialog$1.class.svn-base com/gui/dialog/.svn/prop-base/UpdatingDialog.class.svn-base com/gui/dialog/.svn/text-base/AboutDialog$1.class.svn-base com/gui/dialog/.svn/text-base/AboutDialog.class.svn-base com/gui/dialog/.svn/text-base/EquipmentJavadocDialog.class.svn-base com/gui/dialog/.svn/text-base/RecordScenarioDialog$1.class.svn-base com/gui/dialog/.svn/text-base/RecordScenarioDialog.class.svn-base com/gui/dialog/.svn/text-base/UpdatingDialog$1.class.svn-base com/gui/dialog/.svn/text-base/UpdatingDialog.class.svn-base com/gui/dialog/AboutDialog$1.class com/gui/dialog/AboutDialog.class com/gui/dialog/EquipmentJavadocDialog.class com/gui/dialog/new_equipment/.svn/entries com/gui/dialog/new_equipment/.svn/prop-base/EquipmentComboRenderer.class.svn-base com/gui/dialog/new_equipment/.svn/prop-base/EquipmentConnectionPanel.class.svn-base com/gui/dialog/new_equipment/.svn/prop-base/EquipmentParametersPanel$1.class.svn-base com/gui/dialog/new_equipment/.svn/prop-base/EquipmentParametersPanel.class.svn-base com/gui/dialog/new_equipment/.svn/prop-base/NewEquipmentDialog.class.svn-base com/gui/dialog/new_equipment/.svn/text-base/EquipmentComboRenderer.class.svn-base com/gui/dialog/new_equipment/.svn/text-base/EquipmentConnectionPanel.class.svn-base com/gui/dialog/new_equipment/.svn/text-base/EquipmentParametersPanel$1.class.svn-base com/gui/dialog/new_equipment/.svn/text-base/EquipmentParametersPanel.class.svn-base com/gui/dialog/new_equipment/.svn/text-base/NewEquipmentDialog.class.svn-base com/gui/dialog/new_equipment/EquipmentComboRenderer.class com/gui/dialog/new_equipment/EquipmentConnectionPanel.class com/gui/dialog/new_equipment/EquipmentParametersPanel$1.class com/gui/dialog/new_equipment/EquipmentParametersPanel.class com/gui/dialog/new_equipment/NewEquipmentDialog.class com/gui/dialog/play_scenario/.svn/entries com/gui/dialog/play_scenario/.svn/prop-base/MessageConsole$1.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/MessageConsole.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/PlayScenarioDialog$1.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/PlayScenarioDialog$2.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/PlayScenarioDialog$3.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/PlayScenarioDialog.class.svn-base com/gui/dialog/play_scenario/.svn/prop-base/ScenarioTime.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/MessageConsole$1.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/MessageConsole.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/PlayScenarioDialog$1.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/PlayScenarioDialog$2.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/PlayScenarioDialog$3.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/PlayScenarioDialog.class.svn-base com/gui/dialog/play_scenario/.svn/text-base/ScenarioTime.class.svn-base com/gui/dialog/play_scenario/MessageConsole$1.class com/gui/dialog/play_scenario/MessageConsole.class com/gui/dialog/play_scenario/PlayScenarioDialog$1.class com/gui/dialog/play_scenario/PlayScenarioDialog$2.class com/gui/dialog/play_scenario/PlayScenarioDialog$3.class com/gui/dialog/play_scenario/PlayScenarioDialog.class com/gui/dialog/play_scenario/ScenarioTime.class com/gui/dialog/RecordScenarioDialog$1.class com/gui/dialog/RecordScenarioDialog.class com/gui/dialog/UpdatingDialog$1.class com/gui/dialog/UpdatingDialog.class com/gui/equipment_display/.svn/entries com/gui/equipment_display/.svn/prop-base/ConnectionPanel.class.svn-base com/gui/equipment_display/.svn/prop-base/EmptyPanel.class.svn-base com/gui/equipment_display/.svn/prop-base/EquipmentPanel$1.class.svn-base com/gui/equipment_display/.svn/prop-base/EquipmentPanel.class.svn-base com/gui/equipment_display/.svn/prop-base/EquipmentsPanels.class.svn-base com/gui/equipment_display/.svn/prop-base/ManagementRulePanel.class.svn-base com/gui/equipment_display/.svn/prop-base/MessagePanel.class.svn-base com/gui/equipment_display/.svn/text-base/ConnectionPanel.class.svn-base com/gui/equipment_display/.svn/text-base/EmptyPanel.class.svn-base com/gui/equipment_display/.svn/text-base/EquipmentPanel$1.class.svn-base com/gui/equipment_display/.svn/text-base/EquipmentPanel.class.svn-base com/gui/equipment_display/.svn/text-base/EquipmentsPanels.class.svn-base com/gui/equipment_display/.svn/text-base/ManagementRulePanel.class.svn-base com/gui/equipment_display/.svn/text-base/MessagePanel.class.svn-base com/gui/equipment_display/ConnectionPanel.class com/gui/equipment_display/EmptyPanel.class com/gui/equipment_display/EquipmentPanel$1.class com/gui/equipment_display/EquipmentPanel.class com/gui/equipment_display/EquipmentsPanels.class com/gui/equipment_display/ManagementRulePanel.class com/gui/equipment_display/MessagePanel.class com/gui/ressources_display/RessourcesTask$1.class com/gui/ressources_display/RessourcesTask.class com/gui/tree/.svn/entries com/gui/tree/.svn/prop-base/TreeMouseListener$1.class.svn-base com/gui/tree/.svn/prop-base/TreeMouseListener$2.class.svn-base com/gui/tree/.svn/prop-base/TreeMouseListener$3.class.svn-base com/gui/tree/.svn/prop-base/TreeMouseListener$4.class.svn-base com/gui/tree/.svn/prop-base/TreeMouseListener$5.class.svn-base com/gui/tree/.svn/prop-base/TreeMouseListener.class.svn-base com/gui/tree/.svn/prop-base/TreePanel.class.svn-base com/gui/tree/.svn/prop-base/TreeRenderer.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener$1.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener$2.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener$3.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener$4.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener$5.class.svn-base com/gui/tree/.svn/text-base/TreeMouseListener.class.svn-base com/gui/tree/.svn/text-base/TreePanel.class.svn-base com/gui/tree/.svn/text-base/TreeRenderer.class.svn-base com/gui/tree/TreeMouseListener$1.class com/gui/tree/TreeMouseListener$2.class com/gui/tree/TreeMouseListener$3.class com/gui/tree/TreeMouseListener$4.class com/gui/tree/TreeMouseListener$5.class com/gui/tree/TreeMouseListener.class com/gui/tree/TreePanel.class com/gui/tree/TreeRenderer.class com/main/.svn/entries com/main/.svn/prop-base/IAsispGui.class.svn-base com/main/.svn/prop-base/Main.class.svn-base com/main/.svn/prop-base/MainFX.class.svn-base com/main/.svn/prop-base/MonStageInterface.class.svn-base com/main/.svn/prop-base/StageFX.class.svn-base com/main/.svn/text-base/IAsispGui.class.svn-base com/main/.svn/text-base/Main.class.svn-base com/main/.svn/text-base/MainFX.class.svn-base com/main/.svn/text-base/MonStageInterface.class.svn-base com/main/.svn/text-base/StageFX.class.svn-base com/main/defaut.css com/main/IAsispGui.class com/main/Main.class com/main/MainFX.class com/main/MonStageInterface.class com/main/StageFX$1.class com/main/StageFX$1Stage$anon1.class com/main/StageFX$1Stage$anon2.class com/main/StageFX$2.class com/main/StageFX$3.class com/main/StageFX$4.class com/main/StageFX$_SBECL.class com/main/StageFX.class com/pluginsmanager/.svn/entries com/pluginsmanager/.svn/prop-base/PluginsLoader.class.svn-base com/pluginsmanager/.svn/prop-base/PluginsManager.class.svn-base com/pluginsmanager/.svn/text-base/PluginsLoader.class.svn-base com/pluginsmanager/.svn/text-base/PluginsManager.class.svn-base com/pluginsmanager/api/.svn/entries com/pluginsmanager/api/.svn/prop-base/PluginsManagerDriver.class.svn-base com/pluginsmanager/api/.svn/prop-base/PluginsManagerListener.class.svn-base com/pluginsmanager/api/.svn/text-base/PluginsManagerDriver.class.svn-base com/pluginsmanager/api/.svn/text-base/PluginsManagerListener.class.svn-base com/pluginsmanager/api/PluginsManagerDriver.class com/pluginsmanager/api/PluginsManagerListener.class com/pluginsmanager/PluginsLoader.class com/pluginsmanager/PluginsManager.class com/scenario/.svn/entries com/scenario/.svn/prop-base/ScenarioFileFilter.class.svn-base com/scenario/.svn/prop-base/ScenarioHandler.class.svn-base com/scenario/.svn/prop-base/ScenarioMessage.class.svn-base com/scenario/.svn/text-base/ScenarioFileFilter.class.svn-base com/scenario/.svn/text-base/ScenarioHandler.class.svn-base com/scenario/.svn/text-base/ScenarioMessage.class.svn-base com/scenario/ScenarioFileFilter.class com/scenario/ScenarioHandler.class com/scenario/ScenarioMessage.class com/sun/javafx/runtime/main/Main.class connection.png console.png copy.png down.png equipment.png equipments_manager.png equipment_run.png equipment_stop.png error.png exit.png hourglass.png info.png java.png load.png lock.png management_rule.png message.png message_error.png new.png parameters.png pause.png play.png plugin.png puce.png puce_2.png rec.png remove.png replay.png resume.png run.png save.png save_as.png select_all.png send.png settings.png stop.png Thumbs.db unlock.png up.png update.png warning.png
Juste pour etre sur, si tu remplace ceci
par ceci,Code:URLClassLoader loader = new URLClassLoader(new URL[] {url}, this.getClass().getClassLoader());
t'as toujours l'erreur? C'est curieux que ta classe soit non trouvée.Code:URLClassLoader loader = new URLClassLoader(new URL[] {url}, Thread.currentThread().getContextClassLoader());
J'ai apporté la derniere modification que tu m'a suggéré. J'ai toujours la même erreur en effet. Pourtant quand je lance depuis Eclipse en tant qu'application de bureau pas de problème du tout. C'est vraiment le passage en jws qui m'apporte ce pb.
tu peux confirmer, au niveau de ton loader de plugin, que la classe est bien accessible en dehors de plugins? En faisant?Code:this.getClass().forName("com.equipment.management_rule.ScheduleManagementRule")
Excuse moi j'ai pas compris que me demande tu de faire? Ou doit intervenir ta derniere commande?
Désolé si ma question est bête mais j'ai pas très bien compris . (ça vient de moi)
au début de ta méthode loadPlugins par exemple. C'est juste pour voir si la classe est bien visible depuis javawebstart....
Bonjour,
J'ai rajouté la ligne de code au début de ma fonction loadPlugins(). Je ne vois rien de particulier apparaître dans mon application ni dans la console Java.
Je devrais voir quoi?
Tu peux nous montrer l'exception que tu as maintenant? Je veux voir si elle aurait pas changé un peu.
Bonjour,
Suite à la commande
que tu m'a proposé, Eclipse me dit que je ne peux pas accèder à la méthode forName(String) ed manière statique j'ai donc remplacé par :Code:
1
2 this.getClass().forName("com.equipment.management_rule.ScheduleManagementRule")
j'ai alors cette exception :Code:
1
2
3
4 this.getClass(); Class.forName("com.equipment.management_rule.ScheduleManagementRule")
Code:
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 java.lang.NoClassDefFoundError: com/equipment/management_rule/ScheduleManagementRule at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.pluginsmanager.PluginsLoader.loadPlugins(PluginsLoader.java:93) at comm.pluginsmanager.PluginsManager.loadPlugins(PluginsManager.java:97) at com.ausy.asisp.pluginsmanager.PluginsManager.<init>(PluginsManager.java:67) at com.main.Main.main(Main.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.runtime.Main.main(Unknown Source) at com.sun.javafx.runtime.main.Main.main(Main.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: com.equipment.management_rule.ScheduleManagementRule at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 32 more
ok donc ton application principale vois bien la classe, mais pas le plugin :s. Pourrais-tu nous donner ta dernière version de loadPlugins() qu'on sache sur quoi on travaille après tous ces changement? Et met en évidence la ligne 93 au passage ;)
Voici la dernière version de la méthode loadPlugins()
J'ai mis en vert la ligne 93Code:
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 public void loadPlugins() throws Exception { this.getClass(); Class.forName("com.equipment.management_rule.ScheduleManagementRule"); this.pluginsDirectory = new File("plugins"); this._pluginFiles = new ArrayList<String>(); this.scanPluginsDirectory(this.pluginsDirectory); this.pluginFiles = new String[this._pluginFiles.size()]; this._pluginFiles.toArray(this.pluginFiles); if(this.pluginFiles == null || this.pluginFiles.length == 0){ return; } if(this.equipmentPlugins.size() != 0) return; File[] tempFile = new File[this.pluginFiles.length]; Enumeration<?> jarEnumeration = null; Class<?> tmpClass = null; for(int i=0; i<tempFile.length; i++) { tempFile[i] = new File(this.pluginFiles[i]); if(!tempFile[i].exists()) { break; } URL url = tempFile[i].toURI().toURL(); this.loadPluginInClassPath(url); //URLClassLoader loader = new URLClassLoader(new URL[] {url}, this.getClass().getClassLoader()); URLClassLoader loader = new URLClassLoader(new URL[] {url}, Thread.currentThread().getContextClassLoader()); JarFile jarFile = new JarFile(tempFile[i].getAbsolutePath()); jarEnumeration = jarFile.entries(); try{ while(jarEnumeration.hasMoreElements()) { String tmpString = jarEnumeration.nextElement().toString(); if(tmpString.length() > 6 && tmpString.endsWith(".class")) { tmpString = tmpString.substring(0, tmpString.length()-6); tmpString = tmpString.replaceAll("/","."); //tmpClass = Class.forName(tmpString, true, loader); tmpClass = loader.loadClass(tmpString); if(!tmpClass.isInterface() && !tmpClass.isEnum() && !tmpClass.isAnnotation()) { if(tmpClass.getSuperclass().getSimpleName().equals("Equipment")) { Equipment tempEquipment = ((Equipment) tmpClass.newInstance()).getNewInstance(this.pluginsManager); tempEquipment.setPluginName(this.addPluginName(this.pluginFiles[i])); this.equipmentPlugins.add(tempEquipment); } } } } } catch(Throwable e){ e.printStackTrace(); Thread.sleep(60000); // une minute de pause pour lire! } loader = null; jarFile = null; } }
Peux tu donner l'affichage du code suivant (je suis autant largué que toi)
Code:
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 public void loadPlugins() throws Exception { this.getClass(); Class.forName("com.equipment.management_rule.ScheduleManagementRule"); this.pluginsDirectory = new File("plugins"); this._pluginFiles = new ArrayList<String>(); this.scanPluginsDirectory(this.pluginsDirectory); this.pluginFiles = new String[this._pluginFiles.size()]; this._pluginFiles.toArray(this.pluginFiles); if(this.pluginFiles == null || this.pluginFiles.length == 0){ return; } if(this.equipmentPlugins.size() != 0) return; File[] tempFile = new File[this.pluginFiles.length]; Enumeration<?> jarEnumeration = null; Class<?> tmpClass = null; for(int i=0; i<tempFile.length; i++) { tempFile[i] = new File(this.pluginFiles[i]); if(!tempFile[i].exists()) { break; } URL url = tempFile[i].toURI().toURL(); this.loadPluginInClassPath(url); System.out.println("Creating classloader for "+url.); URLClassLoader loader = new URLClassLoader(new URL[] {url}, this.getClass().getClassLoader()); //URLClassLoader loader = new URLClassLoader(new URL[] {url}, Thread.currentThread().getContextClassLoader()); JarFile jarFile = new JarFile(tempFile[i].getAbsolutePath()); System.out.println("loading jar file "+tempFile[i].getAbsolutePath()); jarEnumeration = jarFile.entries(); try{ while(jarEnumeration.hasMoreElements()) { String tmpString = jarEnumeration.nextElement().toString(); if(tmpString.length() > 6 && tmpString.endsWith(".class")) { tmpString = tmpString.substring(0, tmpString.length()-6); tmpString = tmpString.replaceAll("/","."); //tmpClass = Class.forName(tmpString, true, loader); System.out.println("loading class <"+tmpString+">"); tmpClass = loader.loadClass(tmpString); if(!tmpClass.isInterface() && !tmpClass.isEnum() && !tmpClass.isAnnotation()) { if(tmpClass.getSuperclass().getSimpleName().equals("Equipment")) { Equipment tempEquipment = ((Equipment) tmpClass.newInstance()).getNewInstance(this.pluginsManager); tempEquipment.setPluginName(this.addPluginName(this.pluginFiles[i])); this.equipmentPlugins.add(tempEquipment); } } } } } catch(Throwable e){ e.printStackTrace(); Thread.sleep(60000); // une minute de pause pour lire! } loader = null; jarFile = null; } }
En parlant de l'affichage tu me demandes, les messages consoles?
oui, il y a des system.out en plus et des lignes changées
D'accord excuse moi je n'avais pas vu. Alors j'ai testé le code avec tes ajouts et j'obtiens le stacktrace suivant :
Code:
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 Creating classloader for file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar loading jar file C:\Documents and Settings\admin\workspace\Mon applli\dist\plugins\splugin.jar loading class <com.pluginexample.equipemnt.management_rule.ScheduleNOP> java.lang.NoClassDefFoundError: com/equipment/management_rule/ScheduleManagementRule at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.pluginsmanager.PluginsLoader.loadPlugins(PluginsLoader.java:172) at com.pluginsmanager.PluginsManager.loadPlugins(PluginsManager.java:97) at com.pluginsmanager.PluginsManager.<init>(PluginsManager.java:67) at com.main.Main.main(Main.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.runtime.Main.main(Unknown Source) at com.sun.javafx.runtime.main.Main.main(Main.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: com.equipment.management_rule.ScheduleManagementRule at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 32 more
Bonjour,
Après plusieurs essais, je reste toujours bloqué avec mon problème de plugin jar. Quelqu'un aurait-il une idée ou une piste à me suggérer? D'avance. Merci
tu peux nous montrer le code de cette méthode? Dans la logique du chargement d'un jar au sein d'un classloader, j'en vois pas l'intéret, et je me demande ce qu'elle tripatouille....Code:this.loadPluginInClassPath(url);
Edit: la seule raison que je verrais pour que la classe de ton plugin ne vois pas ta classe principale, ce serait que le plugin sois chargé par le classloader bootstrap et non par ton classloader (le principe de délégation donne priorité au classloader parent), et le bootstrap serait bien emmerdé parce que, ta classe principale il la connait pas. Peux tu ajouter ce code pour vérifier?
ce code donnera exactement tous les emplacement ou l'on peux trouver la classe. Si t'as des doublons, ce sera bingo on aura trouvé la cause :DCode:
1
2
3
4
5
6
7
8
9
10
11 if(tmpString.length() > 6 && tmpString.endsWith(".class")) { //rajouté try { Enumeration<?> e = loader.getResources(tmpString); while (e.hasMoreElements()) System.out.println(e.nextElement()); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //fin rajout
Voici le code de la méthode demandée :
Code:
1
2
3
4
5
6
7
8
9
10 private void loadPluginInClassPath(URL url) throws Exception { URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class<?> sysclass = URLClassLoader.class; Method method = sysclass.getDeclaredMethod("addURL",URL.class); method.setAccessible(true); method.invoke(sysloader,new Object[]{ url }); }
Ok je rajoute le code. juste une question, dans la ligne :
A quoi correspond :Code:
1
2 Enumeration<?> e = TestUrls.class.getClassLoader().getResources(tmpString);
? Pour que je puisse compilerCode:TestUrls
ok, tu va me retirer cette méthode loadinclasspath immédiatement. Ton plugin n'a rien à faire dans le system classloader, il ne trouvrera aucune des classes de ton application à partir de là.
En plus du code que tu m'a dit tu me demande de retirer l'appel à la méthode loadinclasspath dans loadplugins?
J'ai retiré l'appel à ma fonction loadPluginInClassPath et la effectivement le plugin semble bien vu dans mon jws:D. Je remarque aussi pour en revenir au début de la discussion que j'écris bien dans mon fichier de log . Par contre j'écris les informations deux fois ce que je ne comprends pas forcément.
Pourrais-tu m'expliquer exactement ce qui se passait avec la méthode loadPluginInClassPath qui apparemment me causait mes problèmes et pourquoi cele venait que en jws et pas en application lancé sous Eclipse??
En tous cas merci beaucoup pour ton aide et ta patience
Juste pour information, après toutes les dernières modifications, j'ai le stacktrace suivant :
Code:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185 Creating classloader for file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar loading jar file C:\Documents and Settings\admin\workspace\Mon applli\dist\plugins\splugin.jar jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ScheduleNOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ScheduleNOP.class loading class <com.pluginexample.equipemnt.management_rule.ScheduleNOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ReplyNOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ReplyNOP.class loading class <com.pluginexample.equipemnt.management_rule.ReplyNOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/PCT.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/PCT.class loading class <com.pluginexample.equipment.PCT> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Sensor.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Sensor.class loading class <com.pluginexample.equipment.Sensor> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Gateway.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Gateway.class loading class <com.pluginexample.equipment.Gateway> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/UndecodedMessage.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/UndecodedMessage.class loading class <com.pluginexample.equipment.connection.listener.UndecodedMessage> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginSingleClientListener.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginSingleClientListener.class loading class <com.pluginexample.equipment.connection.listener.pluginSingleClientListener> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginMultiClientsListener.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginMultiClientsListener.class loading class <com.pluginexample.equipment.connection.listener.pluginMultiClientsListener> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/NOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/NOP.class loading class <com.pluginexample.equipment.message.NOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateNotify.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateNotify.class loading class <com.pluginexample.equipment.message.SensorStateNotify> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateModify.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateModify.class loading class <com.pluginexample.equipment.message.SensorStateModify> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/pluginMessageBuilder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/pluginMessageBuilder.class loading class <com.pluginexample.equipment.message.builder.pluginMessageBuilder> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/MessageService.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/MessageService.class loading class <com.pluginexample.equipment.message.builder.MessageService> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageDataBuilder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageDataBuilder.class loading class <com.pluginexample.equipment.message.data.MessageDataBuilder> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensConfig.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensConfig.class loading class <com.pluginexample.equipment.message.data.GetSensConfig> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoShowStatus.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoShowStatus.class loading class <com.pluginexample.equipment.message.data.DoShowStatus> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/SetSensConfig.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/SetSensConfig.class loading class <com.pluginexample.equipment.message.data.SetSensConfig> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetCoord.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetCoord.class loading class <com.pluginexample.equipment.message.data.GetCoord> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoEcomodeOn.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoEcomodeOn.class loading class <com.pluginexample.equipment.message.data.DoEcomodeOn> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoAskStatus.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoAskStatus.class loading class <com.pluginexample.equipment.message.data.DoAskStatus> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AcknowledgementCode.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AcknowledgementCode.class loading class <com.pluginexample.equipment.message.data.Parameters$AcknowledgementCode> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AddressIdentifier.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AddressIdentifier.class loading class <com.pluginexample.equipment.message.data.Parameters$AddressIdentifier> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$MessageType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$MessageType.class loading class <com.pluginexample.equipment.message.data.Parameters$MessageType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdDoType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdDoType.class loading class <com.pluginexample.equipment.message.data.Parameters$UcmdDoType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdSendAddrType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdSendAddrType.class loading class <com.pluginexample.equipment.message.data.Parameters$UcmdSendAddrType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters.class loading class <com.pluginexample.equipment.message.data.Parameters> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DecodedMessage.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DecodedMessage.class loading class <com.pluginexample.equipment.message.data.DecodedMessage> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageData.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageData.class loading class <com.pluginexample.equipment.message.data.MessageData> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensState.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensState.class loading class <com.pluginexample.equipment.message.data.GetSensState> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/decoder/pluginMessageDecoder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/decoder/pluginMessageDecoder.class loading class <com.pluginexample.equipment.message.decoder.pluginMessageDecoder> Creating classloader for file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar loading jar file C:\Documents and Settings\admin\workspace\Mon applli\dist\plugins\splugin.jar jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ScheduleNOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ScheduleNOP.class loading class <com.pluginexample.equipemnt.management_rule.ScheduleNOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ReplyNOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipemnt/management_rule/ReplyNOP.class loading class <com.pluginexample.equipemnt.management_rule.ReplyNOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/PCT.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/PCT.class loading class <com.pluginexample.equipment.PCT> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Sensor.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Sensor.class loading class <com.pluginexample.equipment.Sensor> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Gateway.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/Gateway.class loading class <com.pluginexample.equipment.Gateway> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/UndecodedMessage.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/UndecodedMessage.class loading class <com.pluginexample.equipment.connection.listener.UndecodedMessage> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginSingleClientListener.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginSingleClientListener.class loading class <com.pluginexample.equipment.connection.listener.pluginSingleClientListener> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginMultiClientsListener.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/connection/listener/pluginMultiClientsListener.class loading class <com.pluginexample.equipment.connection.listener.pluginMultiClientsListener> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/NOP.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/NOP.class loading class <com.pluginexample.equipment.message.NOP> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateNotify.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateNotify.class loading class <com.pluginexample.equipment.message.SensorStateNotify> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateModify.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/SensorStateModify.class loading class <com.pluginexample.equipment.message.SensorStateModify> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/pluginMessageBuilder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/pluginMessageBuilder.class loading class <com.pluginexample.equipment.message.builder.pluginMessageBuilder> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/MessageService.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/builder/MessageService.class loading class <com.pluginexample.equipment.message.builder.MessageService> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageDataBuilder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageDataBuilder.class loading class <com.pluginexample.equipment.message.data.MessageDataBuilder> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensConfig.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensConfig.class loading class <com.pluginexample.equipment.message.data.GetSensConfig> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoShowStatus.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoShowStatus.class loading class <com.pluginexample.equipment.message.data.DoShowStatus> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/SetSensConfig.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/SetSensConfig.class loading class <com.pluginexample.equipment.message.data.SetSensConfig> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetCoord.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetCoord.class loading class <com.pluginexample.equipment.message.data.GetCoord> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoEcomodeOn.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoEcomodeOn.class loading class <com.pluginexample.equipment.message.data.DoEcomodeOn> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoAskStatus.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DoAskStatus.class loading class <com.pluginexample.equipment.message.data.DoAskStatus> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AcknowledgementCode.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AcknowledgementCode.class loading class <com.pluginexample.equipment.message.data.Parameters$AcknowledgementCode> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AddressIdentifier.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$AddressIdentifier.class loading class <com.pluginexample.equipment.message.data.Parameters$AddressIdentifier> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$MessageType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$MessageType.class loading class <com.pluginexample.equipment.message.data.Parameters$MessageType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdDoType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdDoType.class loading class <com.pluginexample.equipment.message.data.Parameters$UcmdDoType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdSendAddrType.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters$UcmdSendAddrType.class loading class <com.pluginexample.equipment.message.data.Parameters$UcmdSendAddrType> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/Parameters.class loading class <com.pluginexample.equipment.message.data.Parameters> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DecodedMessage.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/DecodedMessage.class loading class <com.pluginexample.equipment.message.data.DecodedMessage> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageData.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/MessageData.class loading class <com.pluginexample.equipment.message.data.MessageData> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensState.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/data/GetSensState.class loading class <com.pluginexample.equipment.message.data.GetSensState> jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/decoder/pluginMessageDecoder.class jar:file:/C:/Documents%20and%20Settings/admin/workspace/Mon%applli/dist/plugins/splugin.jar!/com/pluginexample/equipment/message/decoder/pluginMessageDecoder.class loading class <com.pluginexample.equipment.message.decoder.pluginMessageDecoder>
Les classloader vont toujours chercher en priorité dans leur parent les classes à charger , et il ne vont jamais chercher dans leur fils. Dans eclipse, le systemclassloader c'est l'ensemble de test classes de ton application que tu viens de lancer. Résultat, ca inclue dont ton pluginmanager. Résultat, le systemclassloader "vois" ton pluginmanager et toutes tes classes projet.
Dans javawebstart on a un niveau de plus. D'abord il y a le systemclassloader qui est celui de javawebstart, en dessous viens un classloader spécialement instancié pour ton application par webstart, avec ses sécurités, et qui contient tes classes, ensuite viennent tes petits classloader pour les plugins. Résultat, le systemclassloader ne "vois" aucune de tes classes. Quand tu injectais de force le plugin dans le system classloader, tu injectais donc tes classes plugins un niveau au dessus de ton application. Ceux-ci ne voient donc pas ton application principale. Et là tu te retrouve coincé car il ne vois aucune des classes dont il dépend -> NoClassDefFoundError.
En pratique, ton classloader custom est amplement suffisant pour charger les classes du plugin, pas besoin d'aller force des trucs.
PS: pour tes messages en double, regarde si ton splugin.jar n'est pas repris deux fois, par exemple une fois par ton classloader de plugin (qui est le comportement voulu) et une fois dans le fichier jnlp (ce qu'il faudrait, à priori, retirer)
OK. Je comprends mieux mainteant les considérations sur les classloader. Je te remercie beaucoup du temps et de la patience que tu m'a apporté. Je vais maintenant essayer de continuer mon application avec mon JavaFX.
PS : En ce qui concerne les fichiers de log tu me dis de retirer la reference au plugin dans le jnlp?
si tu regarde le texte que tu ma copié / collé, tu verra qu'il trouve chaque classe deux fois. A chaque fois à partir du même jar, ce qui me laisse a penser que deux classloader dans la hierarchie possèdent le classe, ce qui est pas tiptop, tu risque a nouveau d'avoir des problème si tu fais évoluer ton système de plugin. CA viens probablement du fait que tu référence ton splugin.jar à la fois dans le jnlp et que en plus tu le charge manuellement dans un classloader fils -> retire le du jnlp, a priori t'en a pas besoin là.
Si je retire la ligne suivante :
de mon jnlp, j'ai l'erreur suivante :Code:
1
2<jar href="plugins/splugin.jar"/>
Néanmoins, l'application se lance après un certain temps mais je n'ai plus accès aux classes de mon plugin même si il est vu par l'application principaleCode:
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 java.security.AccessControlException: access denied (java.io.FilePermission \C:\Documents and Settings\admin\workspace\Mon applli\dist\sMain.jar read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at sun.awt.SunToolkit.getImageFromHash(Unknown Source) at sun.awt.SunToolkit.getImage(Unknown Source) at javax.swing.ImageIcon.<init>(Unknown Source) at javax.swing.ImageIcon.<init>(Unknown Source) at com.equipment.connection.data.StatusParameter.buildEnumParameter(StatusParameter.java:44) at com.equipment.parameter.EnumParameter.<init>(EnumParameter.java:31) at com.equipment.connection.data.StatusParameter.<init>(StatusParameter.java:36) at com.equipment.connection.tcpip.server.Server.buildParameters(Server.java:62) at com.equipment.connection.tcpip.server.Server.<init>(Server.java:53) at com.pluginexample.equipment.Gateway.<init>(Gateway.java:49) at com.pluginexample.equipment.Gateway.getNewInstance(Gateway.java:129) at com.pluginsmanager.PluginsLoader.loadPlugins(PluginsLoader.java:198) at com.pluginsmanager.PluginsManager.loadPlugins(PluginsManager.java:97) at com.pluginsmanager.PluginsManager.<init>(PluginsManager.java:67) at com.main.Main.main(Main.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.runtime.Main.main(Unknown Source) at com.sun.javafx.runtime.main.Main.main(Main.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source)