IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Quartz: impossible d'instancier le scheduler!


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut Quartz: impossible d'instancier le scheduler!
    Bonjour à tous...

    J'ai cherché sur le forum mais je ne rien trouvé que se rapproche de mon problème.

    Je développe un outil de d'alertes et de rappels par mail. Pour cela j'étudie toutes les technos possibles. Cet outil doit reposer sur un planificateur qui envoie de manière périodique ou événementielle des mails.

    Pour cela, j'ai découvert Quartz, qui me paraît bien correspondre à ce que je recherche.

    Je fais un premier test et là j'ai une belle erreur.. la plus belle qui soit une "java.lang.NullPointerException"......

    J'ai tout essayé et la ligne en cause et celle ci:

    sched.start();

    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
    import java.util.Date;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerUtils;
    import org.quartz.impl.StdSchedulerFactory;
     
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		try{
    			//instanciation de la fabrique
    			SchedulerFactory schedFact = new StdSchedulerFactory();
     
    			//instanciation du scheduler
    			Scheduler sched = schedFact.getScheduler("quartz.properties");
    			//if(sched == null) System.out.println("sched est nul");
     
    			//démarrage du scheduler
    			sched.start();
     
    			//création d'un Job
    			JobDetail jobDetail = new JobDetail("myJob", null, MyTask.class);
     
    			//création et initialisation d'un trigger
    			Trigger trigger = TriggerUtils.makeMinutelyTrigger(); // fire every hour
    			trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));  // start on the next even hour
    			trigger.setName("myTrigger");
     
    			//enregistrement du jao avec le trigger créé
    			sched.scheduleJob(jobDetail, trigger);
    		} catch(SchedulerException schEx)
    		{
    			schEx.printStackTrace();
    		}
    	}
     
    }
    Si quelqu'un a une idée ou a déjà rencontré ce souci, merci d'avance...

    D'ici là, Javatiser bien!

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Peux nous fournir ton fichier de conf et la trace de l'exception stp ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    voici le trace qui n'est pas très explicite (la ligne 24 correspond à la ligne en rouge dans mon précédent post):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.NullPointerException
    	at Main.main(Main.java:24)
    Et le fichier de conf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #============================================================================
    # Configure Main Scheduler Properties  
    #============================================================================
     
    org.quartz.scheduler.instanceName = TestScheduler
    org.quartz.scheduler.instanceId = AUTO
     
    #============================================================================
    # Configure ThreadPool  
    #============================================================================
     
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 3
    org.quartz.threadPool.threadPriority = 5
    Je portais un doute sur le contenu de ce fichier. Je me demande si la configuration est correcte... je n'ai pas trouvé d'aide pour configurer correctement

    Merci!

  4. #4
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Si tu décommentes cette ligne
    //if(sched == null) System.out.println("sched est nul");

    tu obtients donc sched est nul?

    S'il fait un NullPointerException c'est que tu essai d'acceder a un methode d'un objet null.

    Effectivement, il semblerais que tu n'ai pas configurer ton Quartz correctement (le jar est bien dans le rep lib? le fichier de conf se trouve a la bonne place ?).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Oui il m'affiche bien "sched est nul"

    En fait je ne suis pas totalement nouveau en Java... (j'ai du kilométrage comme dirait l'autre). Je savais donc qu'il était null (donc pas instancié).

    quartz-all-1.5.2.jar est dans c:\Sun\AppServer\lib mais je l'ajoute dans Eclipse en tant que "External Jar".

    Par "bonne place" tu veux dire le même répertoire que le Main.java? Si c'est le cas il est à la bonne place...

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    tu es sur que c'est le nom du fichier qu'il faut ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schedFact.getScheduler("quartz.properties");
    essaie schedFact.getScheduler("TestScheduler");

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Oui j'ai essayé et j'ai toujours la "java.lang.NullPointerException"...

    Par contre la méthode "schedFact.getScheduler("TestScheduler");" est utilisable sans paramètres...

    et là j'ai un joli pot-pourri d'erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    org.quartz.SchedulerConfigException: Unable to instantiate InstanceIdGenerator class: null [See nested exception: java.lang.NullPointerException]
    	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:584)
    	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
    	at Main.main(Main.java:20)
    * Nested Exception (Underlying Cause) ---------------
    java.lang.NullPointerException
    	at org.quartz.simpl.LoadingLoaderClassLoadHelper.loadClass(LoadingLoaderClassLoadHelper.java:61)
    	at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:118)
    	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:581)
    	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
    	at Main.main(Main.java:20)

  8. #8
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Vérifies que ton fichier de conf se trouve a la racine de ton repertoire classes (dans WEB-INF) lorsque tu fais ton export pour tester ton appli.

    Mais plus simplement regarde les exemples ici : http://www.opensymphony.com/quartz/wikidocs/Tutorial.html

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Pour l'instant je fais juste des tests en local... et le fichier de conf se trouve dans le répertoire principal du projet, avec toutes les autres classes.

    Mais plus simplement regarde les exemples ici : http://www.opensymphony.com/quartz/wikidocs/Tutorial.html
    J'ai testé l'exemple de la première leçon et testé une version un peu différente et dans les deux cas, j'ai les mêmes exceptions...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Personne n'a une idée de la raison pour laquelle sched est null???

  11. #11
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Dans ce genre de cas quand tout est perdu
    Le plus simple c'est de ramener les sources du probleme (quartz en l'occurence) et de debugger. La plupart du temps il est inutile d'essayer de comprendre le soft, la raison du null pointer sautera au yeux (surtout si tu as du kilometrage) genre fichier pas au bon endroit.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    J'ai du nouveau....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    org.quartz.SchedulerException: ThreadPool class 'org.quartz.simpl.SimpleThreadPool' could not be instantiated. [See nested exception: java.lang.NullPointerException]
    	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:605)
    	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
    	at Main.main(Main.java:20)
    * Nested Exception (Underlying Cause) ---------------
    java.lang.NullPointerException
    	at org.quartz.simpl.LoadingLoaderClassLoadHelper.loadClass(LoadingLoaderClassLoadHelper.java:61)
    	at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:118)
    	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:603)
    	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
    	at Main.main(Main.java:20)
    C'est à cet endroit que le résultat est null:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public Class loadClass(String name) throws ClassNotFoundException {
            return getClassLoader().loadClass(name);
        }

  13. #13
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Qu'est ce qui retourne null getClassLoader() ? ou getClassLoader().loadClass(name) ?

    As tu regardé avec le débugger la valeur de name ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Je ne sais pas... je fais le débug pas à pas mais je n'arrive pas à retrouver la variable name et donc sa valeur... Je continue....

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Encore du nouveau...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schEx.isConfigurationError();
    Le booléen est à TRUE

    hum hum

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schEx.ERR_BAD_CONFIGURATION
    avec une valeur de 50...


  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    J'ai trouvé une solution...
    Je me suis demandé s'il n'y avait pas un lien avec la version utilisée de Quartz..

    J'ai téléchargé et utilisé la version 1.4.3. La doc demandait de copier tous les .jar dans le classpath.. Je m'y suis plié et là surprise... ça marche

    Alors résolu oui je veux bien mais totalement je ne sais pas... Je vais essayer la même chose avec la dernière version et je vous tiens au courant...

  17. #17
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    essayes d'utiliser la propriété org.quartz.properties au démarrage du programme

    ex: -Dorg.quartz.properties=conf/quartz.properties

    le chemin est relatif au root du projet sous eclipse.

    m'enfin, ca devrait fonctionner avec la config par défaut

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Par défaut
    Citation Envoyé par Grégory Picavet
    essayes d'utiliser la propriété org.quartz.properties au démarrage du programme

    ex: -Dorg.quartz.properties=conf/quartz.properties

    le chemin est relatif au root du projet sous eclipse.

    m'enfin, ca devrait fonctionner avec la config par défaut

    euh.... euh....

    Citation Envoyé par Grégory Picavet
    essayes d'utiliser la propriété org.quartz.properties au démarrage du programme

    ex: -Dorg.quartz.properties=conf/quartz.properties
    Tu es sûr de cette propriété? tu parles du chemin d'accès au fichier de conf peut être?

  19. #19
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    oui

  20. #20
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    lOurs4816 > pour ne pas parler dans le vide, montre nous exactement ton arborescence. Ainsi que le chemin de compilation de tes classes.

Discussions similaires

  1. Impossible d'instancier le controle ActiveX
    Par darksideus dans le forum C#
    Réponses: 2
    Dernier message: 07/04/2010, 10h01
  2. Réponses: 4
    Dernier message: 29/07/2009, 09h02
  3. Impossible d'instancier le controle activeX
    Par Aymeric00 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 08/02/2009, 20h54
  4. Impossible d'instancier un xmlparser
    Par Invité dans le forum SQL
    Réponses: 0
    Dernier message: 05/02/2008, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo