Bonjour à tous,
Je viens d'écrire un code qui utilisant des Threads. La compilation du code se passe bien et l'exécution sous éclipse aussi.
Mais une fois le jar exporté le code exécuté par le Thread lève une erreur
Voici le code de la classe utilisant le Thread:
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 Exception in thread "Thread-2" java.lang.NoClassDefFoundError: WebInterface/Coor donnÚesBalise at WebInterface.HtmlParserEchos.getCours(HtmlParserEchos.java:79) at DatasManager.DatasGetter.getDatas(DatasGetter.java:61) at DatasManager.DatasManager.loadData(DatasManager.java:103) at DatasManager.DatasManager.loadIndexCompo(DatasManager.java:70) at DatasManager.DailyProcessor.run(DailyProcessor.java:27) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: WebInterface.CoordonnÚesBalise 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) ... 6 more
Je ne parviens pas à comprendre la raison qui fait que tout s'exécute bien sous Eclipse mais pas lors de l'exécution du Jar exporté.
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 public class DailyProcessor implements Runnable{ private Thread th; private static DatasManager dm = DatasManager.getInstance(); public DailyProcessor() { th = new Thread(this); } public void start() { th.start(); } public void attenteArret(){ try{ th.join(); } catch(InterruptedException e){ Tracer.trace(Level.SEVERE,"Probleme lors de l'arrêt du Thread","attenteArret",this);} } public void run(){ while(true){ Calendar cal = Calendar.getInstance(); if( cal.get(Calendar.HOUR_OF_DAY) >= 18 && (cal.get(Calendar.HOUR_OF_DAY)<20 && cal.get(Calendar.MINUTE)<=30) ){ Tracer.trace(Level.INFO,"############## Chargement des cotations du jour ##############","run",this); dm.loadIndexCompo(); try{ Thread.sleep(1000*60*60); }catch(InterruptedException e){ Tracer.trace(Level.SEVERE,"Thread intérrompu","run",this); } } } } }
Autre chose, si ce code n'est pas placé dans un Thread celui-ci s'exécute correctement.
Merci d'avance
Partager