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

Java Discussion :

RTFTemplate et jar


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut RTFTemplate et jar
    Bonjour,
    J'ai un problème lorsque je souhaite exécuté un .jar dans lequel est utilisé RTFTemplate.

    Sous Eclipse aucun problème mon projet s'exécute normalement et le traitement se déroule bien (fichier velocity.txt et fichier de sortie créé) mais lorsque je le fait sous forme d'un jar exécutable il n'y a plus de traitement de réalisé (pas de fichier velocity.txt ni de fichier de sortie).

    Lors de l'exécution sous Eclipse j'ai des lignes en rouge comme celle-ci: "4 mai 2010 11:54:52 org.springframework.core.CollectionFactory <clinit>". A quoi cela correspond?

    De plus, lors de l'éxecution du jar j'ai bien une fenetre "start" qui apparait mais pas de "start 2" donc le problème viendrait de la ligne "RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();" (elle ne serait pas interprétée dans le jar alors qu'elle l'est sous Eclipse?). Savez vous pourquoi cela ne marche pas pour le jar alors que cela marche sous Eclipse?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JOptionPane.showMessageDialog(frame, nameOfFile+": start");
    // PROBLEME ici dans .jar
    RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();
    JOptionPane.showMessageDialog(frame, nameOfFile+": start 2 ");
    try 
    {       
    	RTFTemplate rtfTemplate=builder.newRTFTemplate("ftlRTFTemplate");
    ...
    PS: azerr m'a parlé d'une config de log4j mais je ne vois pas quoi faire pour résoudre le problème...

    J'ai essayé de supprimer le jar logkit-1.0.1.jar de mon projet, telecharger log4j sur http://apache.cict.fr/logging/log4j/...g4j-1.2.14.zip et copier le jar dans mon projet puis de creer un fichier log4j.properties dans mon repertoire src de mon projet et je n'ai plus les lignes rouge citées précédemment mais j'ai toujours mon problème.

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    Tes erreurs ca ne serait pas des ClassNotFoundException ? Si c'est ca as tu mis dans le classpath tous les jar requis par RTFTemplate. RTFTemplate depend de Spring, as tu ajoute a ton classspath les JAR de spring?

    Angelo

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Je n'ai pas d'exception sous Eclipse et j'ai bien inclus tous les jar dans mon projet.

    Sous Eclipse cela marche bien et me créé bien les fichiers mais avec le jar j'ai un comportement différent (cela affiche la fentre avec le "start" mais pas celle avec le "start 2" ce qui permet de voir où le traitement s'arrête, voir au dessus). Ce comportement cela ne me le fait qu'avec le jar...

    Le traitement s'arrête apparament à la ligne:
    RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();

    J'ai fait un try/catch de tout mon code et voici ce que j'ai (seulement avec le jar ce qui est bizarre):
    Error creating bean with name 'ftlTransformer' defined in class path ressource [net/sourceforge/rtf/rtftemplate-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    En remplacant juste cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RTFTemplate rtfTemplate=builder.newRTFTemplate("ftlRTFTemplate");
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RTFTemplate rtfTemplate = builder.newRTFTemplate();
    Voici le contenu du fichier velocity.txt (obtenu avec Eclipse) peut etre que ca aidera:

    Tue May 04 15:50:06 CEST 2010 [debug] AvalonLogChute initialized using file 'velocity.log'
    Tue May 04 15:50:06 CEST 2010 [trace] *******************************************************************
    Tue May 04 15:50:06 CEST 2010 [debug] Starting Apache Velocity v1.5 (compiled: 2007-02-22 08:52:29)
    Tue May 04 15:50:06 CEST 2010 [trace] RuntimeInstance initializing.
    Tue May 04 15:50:06 CEST 2010 [debug] Default Properties File: org\apache\velocity\runtime\defaults\velocity.properties
    Tue May 04 15:50:06 CEST 2010 [debug] Trying to use logger class org.apache.velocity.runtime.log.AvalonLogChute
    Tue May 04 15:50:06 CEST 2010 [debug] Using logger class org.apache.velocity.runtime.log.AvalonLogChute
    Tue May 04 15:50:06 CEST 2010 [debug] Default ResourceManager initializing. (class org.apache.velocity.runtime.resource.ResourceManagerImpl)
    Tue May 04 15:50:06 CEST 2010 [debug] ResourceLoader instantiated: org.apache.velocity.runtime.resource.loader.FileResourceLoader
    Tue May 04 15:50:06 CEST 2010 [trace] FileResourceLoader : initialization starting.
    Tue May 04 15:50:06 CEST 2010 [debug] Do unicode file recognition: false
    Tue May 04 15:50:06 CEST 2010 [info] FileResourceLoader : adding path '.'
    Tue May 04 15:50:06 CEST 2010 [trace] FileResourceLoader : initialization complete.
    Tue May 04 15:50:06 CEST 2010 [debug] ResourceCache: initialized (class org.apache.velocity.runtime.resource.ResourceCacheImpl)
    Tue May 04 15:50:06 CEST 2010 [trace] Default ResourceManager initialization complete.
    Tue May 04 15:50:06 CEST 2010 [debug] Loaded System Directive: org.apache.velocity.runtime.directive.Literal
    Tue May 04 15:50:06 CEST 2010 [debug] Loaded System Directive: org.apache.velocity.runtime.directive.Macro
    Tue May 04 15:50:06 CEST 2010 [debug] Loaded System Directive: org.apache.velocity.runtime.directive.Parse
    Tue May 04 15:50:06 CEST 2010 [debug] Loaded System Directive: org.apache.velocity.runtime.directive.Include
    Tue May 04 15:50:06 CEST 2010 [debug] Loaded System Directive: org.apache.velocity.runtime.directive.Foreach
    Tue May 04 15:50:06 CEST 2010 [debug] Created '20' parsers.
    Tue May 04 15:50:06 CEST 2010 [trace] Velocimacro : initialization starting.
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : "velocimacro.library" is not set. Trying default library: VM_global_library.vm
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : Default library not found.
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : allowInline = true : VMs can be defined inline in templates
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : allowInlineToOverride = false : VMs defined inline may NOT replace previous VM definitions
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : allowInlineLocal = false : VMs defined inline will be global in scope if allowed.
    Tue May 04 15:50:06 CEST 2010 [debug] Velocimacro : autoload off : VM system will not automatically reload global library macros
    Tue May 04 15:50:06 CEST 2010 [trace] Velocimacro : Velocimacro : initialization complete.
    Tue May 04 15:50:06 CEST 2010 [trace] RuntimeInstance successfully initialized.

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Utilises tu les memes JAR de la distrbution RTFTemplate? Ton erreur "java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found" je soupsonne que tu n'utilies pas la meme version de commons-collection que celle fournit par RTFTemplate.

    Angelo

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    tous les jar sont normalement issus de "rtftemplate-1.0.1-b14" dans le dossier "lib". Je vais quand même vérifier car avant j'utilisais une version précédente de rtftemplate et je vais vérifier que je ne me suis pas emmeller...

    EDIT: J'ai remplacé tous les jar du projet par ceux présents dans le dossier "lib" de "rtftemplate-1.0.1-b14", refais un fichier jar mais toujours la même erreur a l'exécution du jar:
    Error creating bean with name 'ftlTransformer' defined in class path ressource [net/sourceforge/rtf/rtftemplate-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found

    Et le traitement s'arrête a la ligne:
    RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Merci a toi je t'ai envoyé tout ca par contre une précision, il faut vider le dossier "output" avant le lancement du jar car j'y ai laissé des fichiers tel qu'ils devraient être.

    Merci encore.

  8. #8
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Je viens de regarder rapidement ton probleme et deja je n'ai pas bien compris pourquoi tu avais cree un seul JAR generation.jar qui contient toutes les classes de ton projet maus aussi toutes les classes des autres JARs (spring, rtftemplate....)? J'ai du mal a voir l'interet de faire ca.

    J'ai decompiler ta classe Java qui pose probleme = org.apache.commons.digester.Digester et ton problème est celui que je t'avais dit. Tu n'as pas la bonne version de commons-collection ou commons-digester. En effet un moment ils font dans Digester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matches = new ArrayStack(10);
    et la classe org.apache.commons.collections.ArrayStack de ton JAR n'a pas ce constructeur, d'ou l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Caused by: java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found
    qui veut dire que le constructeur ArrayStack n'exsite pas avec un argument int.

    Tout ca pour dire que je te conseille de garder les JAR commons-collections... et de creer un JAR generation qu'avec tes classes. Ensuite quand tu executes ta classes Main tu lui fournit dans son classpath tous les JARs.

    Je pense que tu as toutes les billes pour te debrouiller. Bon courage.

    Angelo

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Pour le jar je l'ai généré avec Eclipse et effectivement tout est dedans car il doit pouvoir être utilisé sur n'importe quel pc simplement (un simple jar est facile a transporter et a utiliser et ce n'est pas moi qui y met tout mais c'est Eclispe qui créé un jar de cette manière lorsqu'on exporte un runnable jar).

    Pour la version de commons-collection ou commons-digester je ne vois pas comment je peux avoir la mauvaise version puisqu'elle vient directement du répertoire "lib" de "rtftemplate-1.0.1-b14" (je t'ai passé le zip du projet tu peux vérifier).
    Que me conseilles tu pour régler ce "problème de version"?

    Tu dis:
    "Tout ca pour dire que je te conseille de garder les JAR commons-collections... et de creer un JAR generation qu'avec tes classes. Ensuite quand tu executes ta classes Main tu lui fournit dans son classpath tous les JARs"
    Je ne vois pas trop ce que tu veux dire mais je demanderais a un mec d'ici a son je pense.

    Merci de ta réponse rapide.

  10. #10
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Je croies que je viens de comprendre le probleme. La classe ArrayStack se retrouve dans 2 JAR commons-beanutils.jar et commons-collection.jar et c'est celui de commons-collection.jar qui pose problème. Donc essaie d'enlever le JAR commons-collection.jar de ton projet et recompile ton JAR (en runnable comme tu as fait).

    Angelo

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Merci c'était ca car maintenant ca marche !! On voit que tu connais bien le sujet comparé a moi qui débute en Java (juste 1 année donc pas beaucoup d'expérience) mais qui adore. Je te tire mon chapeau.

    Bon courage pour tes projets et bonne continuation.

  12. #12
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Je suis ravi que tu aies pu resoudre le probleme. Moi ca fait 9 ans que je bosse, donc tous ces problemes de ClassLoader je m'en suis pas mal cogne.

    Je te conseille d'installer Jad qui te permet de decompiler les classes et de voir ce qui a dans les JARs quand tu as un probleme comme ca, sinon c'est impossible de s'en sortir.

    Je suis moi meme passionne (si jamais ca t'interesse http://angelozerr.wordpress.com/about/) et tu verras, plus tu en apprends, plus tu as envie d'en apprendre. Un conseil que je me permets de te donner, c'est de s'entourer de personnes qui ont de l'experience car si tu postes tout le temps sur DVP pour ce genre de questions, les gens vont se fatiguer et tu n'aurras plus de reponse.

    Je ne comprends toujours pas, pourquoi ton tuteur de stage de la boite (qui se dit super competente) n'a pas pu t'aider sur ce coup la. Un tuteur de stage c'est super important qu'il puisse te cadre et t'aider. Moi j'ai eu la chnace de faire mes stages (dans une petie boite) avec un responsable technique qui m'impressionnait (et qui m'impressionne toujours). La casquette responsable technique, c'est pas seulement le titre, il faut aussi assurer derriere.

    Bonne continuation et je te souhaite de bien t'eclater.

    Angelo

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Ok je vais suivre ton conseil et utiliser l'outil que tu m'a passé.

    En fait Thales est certes une grosse boite mais il y a des services indépendants. Dans le service dans lequel je suis il n'y a qu'une personne qui s'y connait bien en Java mais il est en vacances et je ne penses pas qu'il aurait trouvé que c'était ce JAR qui posait problème. Dans les autres services il y en a aussi mais ils travaillent sur des projets. De plus, déranger une personne d'un autre service coute au service dans lequel je suis (il doit payer cette personne pour son aide et pour le temps qu'elle a pris pour moi).
    Mon maitre de stage n'est pas un programmeur et il ne connait pas trop Java. C'est lui qui a besoin de l'outil que je fais donc il m'exprime juste ses besoins et m'aide comme il peut. Il faut donc que je trouve de l'aide par mes propres moyens (ce qui me permet d'acquérir de l'expérience car comme tu l'as dis, a force de rencontrer des problèmes on les connait et on peut les résoudre plus facilement sans forcément l'aide des autres).

    Vive le Java!!!!!

Discussions similaires

  1. [jar]chargement dynamique.
    Par Teddy-htk dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 27/04/2006, 15h19
  2. [débutant][jar][Manifest.MF]
    Par Stessy dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 06/08/2003, 19h54
  3. Ajouter un jar ou un package à un autre package
    Par zoulai dans le forum JBuilder
    Réponses: 6
    Dernier message: 30/07/2003, 10h34
  4. [jar executable][Service NT]
    Par paca_mike dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 28/04/2003, 13h39
  5. creation d un fichier jar ou .exe en java
    Par sadjia dans le forum JBuilder
    Réponses: 13
    Dernier message: 13/12/2002, 16h01

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