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

BIRT Discussion :

[2.2.1.1][JavaScript] Appel à une classe java


Sujet :

BIRT

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [2.2.1.1][JavaScript] Appel à une classe java
    Bonjour à tous,

    Je souhaite faire appel à une classe java une fois que mon état birt est construit afin de mettre à jour une base de données.

    1) Ma config
    • version de birt : 2.2.1.1
    • mode d’exécution : utilisation du BIRT Runtime sur Linux
    • exécution : en batch


    2) Ma classe

    J’ai créé ma classe mc.batch.Virements dans laquelle un methode getInstance() me retourne une instance de celle-ci. Comme précisé dans le FAQ Birt, j’ai placé le jar contenant ma classe dans ReportEngine/lib du runtime.

    3) Mon état

    J’ai placé le code suivant dans la partie initialize ( j’ai fait de même dans beforeOpen => même résultat) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var obj;
    obj = new Packages.mc.batch.Virements.getInstance();
    4) Exécution

    Lors de l’exécution de l'état j’ajoute au classpath l’emplacement de mon jar.

    5) Resultat

    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
    14 déc. 2007 10:12:21 org.eclipse.birt.report.engine.executor.ExecutionContext evaluate
    GRAVE: TypeError: [JavaPackage mc.batch.Virements.getInstance] n'est pas une fonction (<inline>#3)
    org.mozilla.javascript.EcmaError: TypeError: [JavaPackage mc.batch.Virements.getInstance] n'est pas une fonction (<inline>#3)
            at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3240)
            at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3230)
            at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3246)
            at org.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3258)
            at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3317)
            at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3308)
            at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2057)
            at org.mozilla.javascript.gen.c6._c0(<inline>:3)
            at org.mozilla.javascript.gen.c6.call(<inline>)
            at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:304)
            at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2769)
            at org.mozilla.javascript.gen.c6.call(<inline>)
            at org.mozilla.javascript.gen.c6.exec(<inline>)
            at org.eclipse.birt.core.script.ScriptContext.eval(ScriptContext.java:223)
            at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:576)
            at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:555)
            at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleJSInternal(ScriptExecutor.java:61)
            at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleJS(ScriptExecutor.java:45)
            at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:30)
            at org.eclipse.birt.report.engine.api.impl.EngineTask.loadDesign(EngineTask.java:1187)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:82)
            at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:68)
            at org.eclipse.birt.report.engine.api.ReportRunner.runAndRenderReport(ReportRunner.java:221)
            at org.eclipse.birt.report.engine.api.ReportRunner.execute(ReportRunner.java:161)
            at org.eclipse.birt.report.engine.api.ReportRunner.main(ReportRunner.java:117)
    6) Conclusion

    J’ai la vague impression qu’il ne trouve pas ma classe !
    Là je tourne en rond depuis quelque temps.

    Merci de votre aide

  2. #2
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    Avant de faire des appels à du code java en javascript à travers birt il est important de savoir développer en java.

    et la pour le coup le code va avoir du mal à fonctionner :

    obj = new Packages.mc.batch.Virements.getInstance();
    On ne peux instancier une classe et dans le même temps appeler une méthode qui renvoie une instance de cette même classe... ca parait logique et pourtant c'est ce qu'on peut lire dans ce code.

    Soit tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj = new Packages.mc.batch.Virements();
    Soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj = Packages.mc.batch.Virements.getInstance();
    mais ce n'est même pas sure que ca fonctionne tout dépend du code de la classe Virements.

    A noter qu'on peut importer des packages avec la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    importPackage(Packages.mc.batch);
    A lire si ce n'est pas déjà fait: http://wiki.eclipse.org/BIRT/FAQ/Scr..._JavaScript.3F

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    autant pour moi, j'ai mal relu mon post....
    effectivement j'utilise ma classe Virements comme un singleton donc j'ai bien dans mon javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj = Packages.mc.batch.Virements.getInstance();
    Je me suis référé à la FAQ BIRT, mais ça m'aide pas plus que ça!!

Discussions similaires

  1. Jsp : appeler une classe java
    Par pitchu dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 02/03/2015, 20h17
  2. Réponses: 1
    Dernier message: 29/08/2010, 22h50
  3. comment appeler une classe java dans une page jsp?
    Par limalima dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/11/2008, 22h59
  4. Appeler une classe java en perl
    Par missllyss dans le forum Langage
    Réponses: 1
    Dernier message: 04/06/2008, 15h35
  5. Réponses: 11
    Dernier message: 30/08/2007, 17h20

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