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

Eclipse Java Discussion :

Erreur Eclipse Java Drools


Sujet :

Eclipse Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur D'étude en Informatique Médicale
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur D'étude en Informatique Médicale
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Erreur Eclipse Java Drools
    Bonjour à tous,

    Pour commencer je ne suis pas informaticienne et je reprends une application développée par quelqu'un d'autre donc je vous pries de bien vouloir m'excuser si je pose des questions basiques.
    Cette application est développée en Java et intègre des règles en Drools. (si vous avez besoin de plus d'info n'hésitez pas, je ne sais pas ce qui peut vous être utile)
    2 erreurs apparaissent régulièrement lorsque j'exécute mon programme sous Eclipse :
    - Out of memory : j'ai essayé de changer les paramètres de la VM selon ce que j'ai pu trouver sur des forums mais rien n'y fait... Je pense que le problème c'est que le code n'est pas optimisé mais je ne sais pas s'il faut que je modifie les règles drools ou le code Java. Y a-t-il un moyen de savoir ce qui pose problème ?
    - java.lang.NullPointer.Exception : cette erreur apparait dans une règle où aucune variable ne manque dans le "when" et ajoute ces variables dans une classe/liste (je ne sais pas si quels sont les bons termes) :

    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
     
    rule "Règle pour type : A"
    no-loop
    salience 447
    	when
     
    		mot : tab_mots (idm : idmot, idLi : idLieux, forme : form, sta : start, idg : idGroupe, iddd : idDate_debut, iddf : idDate_fin,  lem : lemma, Int == false, cat : catégorie)
     
    	then
     
    		Truc truc = new Truc();
    		truc.setId_groupe(idg);
    		truc.setTerme(forme);
    		truc.setPosition(sta);
    		truc.setId(idt);
    		truc.setId_date_debut(iddd);
    		truc.setId_date_fin(iddf);
    		truc.setId_lieux(idLi);
    		truc.setCatégorie(cat);
    		insert(truc);
    		retract(mot);
    		Effet eff = new Effet();
    		eff.setId_truc(idm);
    		eff.setType_lien(cat);
    		eff.setType_("A");
    		insert(eff);
     
    end
    Merci d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,


    1. Citation Envoyé par Nass42 Voir le message
      - Out of memory :
      Citation Envoyé par Nass42 Voir le message
      Je pense que le problème c'est que le code n'est pas optimisé
      Pas nécessairement. Le programme peut avoir besoin de beaucoup de mémoire pour fonctionner.

      Citation Envoyé par Nass42 Voir le message
      j'ai essayé de changer les paramètres de la VM selon ce que j'ai pu trouver sur des forums mais rien n'y fait...
      Quels sont exactement les paramètres que tu as mis (et où dans Eclipse ?)


      Citation Envoyé par Nass42 Voir le message
      mais je ne sais pas s'il faut que je modifie les règles drools ou le code Java. Y a-t-il un moyen de savoir ce qui pose problème ?
      Il y a un moyen : utiliser un profiler. Comme Java Mission Control ou JVisualVM, mais ça demande de solides connaissances dans le fonctionnement du Java (et/)ou pas mal d'intuition au moins.
      La question est de savoir si la mémoire utilisée augmente continuellement (indiquant possiblement des fuites de mémoire) alors qu'on répète certaines actions. En particulier si après une action (lorsqu'elle est vraiment terminée) et qu'on en lance une autre, ou la même, la mémoire utilisée par la première action n'est pas libérée.
      En gros, l'usage de la mémoire devrait être en dent de scie, mais chaque dent peut dépasser la limite maximale (nécessitant donc d'augmenter la mémoire allouée).

    2. Citation Envoyé par Nass42 Voir le message
      - java.lang.NullPointer.Exception : cette erreur apparait dans une règle où aucune variable ne manque dans le "when" et ajoute ces variables dans une classe/liste (je ne sais pas si quels sont les bons termes) :
      Si tu sais qu'il y a une NullPointerException, c'est qu'à priori tu as une stacktrace. Elle serait très utile pour avoir une idée précise du problème et estimer une solution.
      Une stacktrace c'est quelque chose qui ressemble à ça :
      java.lang.NullPointerException
          at truc.ClassMachin.methodMachin(ClassMachin.java:118)
          at truc.ClassBidule.methodBidule(ClassBidule.java:995)
          at truc.ClassBidule.methodeChose(ClassBidule.java:116)
          ....

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur D'étude en Informatique Médicale
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur D'étude en Informatique Médicale
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    1. J'ai mis :
    - "-Xms1024m -Xmx1024m" dans Run/Run Configuration ; mon projet sélectionné ; dans l'onglet Argument ; VM argument
    - "-Xmx1024m" dans Windows/Preferences ; Java/Installed JREs ; jre1.8.0_73 (le seul que j'ai) ; Default VM argument
    - j'augmente la priorité à Java lorsque je lance le programme dans le gestionnaire des taches, sans succès
    - je n'ai pas les droits administrateurs donc je n'ai pas pu augmenter la mémoire allouer à Eclipse via Windows

    Je vais essayer de voir si je peux utiliser un profiler, malheureusement je n'ai que de vagues notions de Java...

    2. Voilà la stacktrace que j'ai :

    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
     
    java.lang.NullPointerException
    	at org.drools.core.util.AbstractHashTable$SingleIndex.hashCodeOf(AbstractHashTable.java:484)
    	at org.drools.core.util.index.LeftTupleIndexHashTable.getOrCreate(LeftTupleIndexHashTable.java:449)
    	at org.drools.core.util.index.LeftTupleIndexHashTable.add(LeftTupleIndexHashTable.java:379)
    	at org.drools.core.phreak.PhreakJoinNode.doLeftInserts(PhreakJoinNode.java:84)
    	at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:60)
    	at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:547)
    	at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:533)
    	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:334)
    	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161)
    	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116)
    	at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:92)
    	at org.drools.core.common.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:1044)
    	at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:996)
    	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1302)
    	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1289)
    	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1262)
    	at com.sample.MaBase.main(MaBase.java:1820)
    Mais cette erreur n'apparait pas à chaque fois que la règle se lance ; seulement pour certain mot. Je n'arrive cependant pas à trouver quelle est la différence entre ceux qui fonctionnent et ceux qui ne fonctionnent pas.

    Merci à vous.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Nass42 Voir le message
    1. J'ai mis :
    - "-Xms1024m -Xmx1024m" dans Run/Run Configuration ; mon projet sélectionné ; dans l'onglet Argument ; VM argument
    -Xmx1024m veut dire que tu as alloué 1 Gib de mémoire pour le tas, ce qui est assez conséquent : ce ne veut pas dire nécessairement que c'est assez, mais on peut en effet faire l'hypothèse d'une fuite. Le -Xms c'est pour régler la pile (stack) et je ne pense pas que ça soit nécessaire (on aurait une stackoverflow avant d'exploser la pile, à moins que tu aies aussi modifer -Xss).

    Citation Envoyé par Nass42 Voir le message
    - "-Xmx1024m" dans Windows/Preferences ; Java/Installed JREs ; jre1.8.0_73 (le seul que j'ai) ; Default VM argument
    ça c'est superflu à mon avis. Je pense que ça concerne la jre utilisée par exemple pour les applets dans les navigatuer

    Citation Envoyé par Nass42 Voir le message
    - j'augmente la priorité à Java lorsque je lance le programme dans le gestionnaire des taches, sans succès
    ça n'aura aucun effet sur l'usage de la mémoire

    Citation Envoyé par Nass42 Voir le message
    - je n'ai pas les droits administrateurs donc je n'ai pas pu augmenter la mémoire allouer à Eclipse via Windows
    La mémoire allouée à Eclipse ne joue pas : l'exécution est forked normalement.

    Citation Envoyé par Nass42 Voir le message
    Je vais essayer de voir si je peux utiliser un profiler, malheureusement je n'ai que de vagues notions de Java...
    Il n'est pas impossible que le dépassement de mémoire soit une conséquence de la NullPointerException : il vaudrait mieux régler cette exception avant.

    2. Voilà la stacktrace que j'ai :

    Citation Envoyé par Nass42 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NullPointerException
    	at org.drools.core.util.AbstractHashTable$SingleIndex.hashCodeOf(AbstractHashTable.java:484)
    L'erreur est manifestement dans le code de Drools. En cas de mauvais paramétrage on devrait avoir une erreur plus explicite (plus end-user). Un développeur Java pourrait analyser le code et utiliser le mode debug pour déterminer le problème, mais je pense que tu devrais poser la question directement sur les forums de Drools (dans leur section community). Éventuellement, tu peux poser la question dans la section JBoss, en préfixant l’intitulé de la question par le tag [Drools], pour avoir possiblement une réponse plus rapide qu'ici (forum Eclipse).

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ingénieur D'étude en Informatique Médicale
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur D'étude en Informatique Médicale
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Effectivement ce sont les mêmes règles qui créer les 2 erreurs dans certains cas (le programme s’arrête au même endroit).

    Merci pour ces info et vos conseils.
    Je vais essayer de reposer la question ailleurs.

Discussions similaires

  1. erreur EXCEPTION_ACCESS_VIOLATION sous eclipse java
    Par christianf dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/08/2007, 18h32
  2. Réponses: 1
    Dernier message: 22/03/2005, 14h28
  3. [Eclipse][Java]Problème de compilation sur CTRL+S
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/05/2004, 11h49
  4. [SWT]Eclipse Java : swt.widgets.Table
    Par watson dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 01/10/2003, 09h07

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