Bonjour,

J'utilise RTFTemplate, j'ai pris l'exemple :
http://rtftemplate.sourceforge.net/f...late-java.html.

J'ai créé la classe :

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
public class RtfTemplateExemple {
 
    public static void main(String[] arg) throws UnsupportedRTFTemplate, FileNotFoundException{
 
        String rtfSource = "C:/Cabinet/documents/certificats_medicales/templateCertificat.rtf";
         // 1. Get default RTFtemplateBuilder
        RTFTemplateBuilder builder = RTFTemplateBuilder.newRTFTemplateBuilder();
 
         // 2. Get RTFtemplate with default Implementation of template engine (Freemarker)
         RTFTemplate rtfTemplate = builder.newRTFTemplate("ftlRTFTemplate");
        // 3. Set the RTF model source
         rtfTemplate.setTemplate(new File(rtfSource));
         // 4. Put the context
       rtfTemplate.put("champFusionTest", "BO3OOOOOOOOO");
 
 
 
    }
et j'utilise le fichier de config suivant :

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--
	@author : Angelo ZERR
	@date : 01/02/2007
	@description : it's spring configuration to manage
				   the template engine used by RTFTemplate.
				   If you want you can add it your class
				   template engine here which must implements
				   the interface
				   net.sourceforge.rtf.template.ITemplateEngine
 -->
<beans>
        <!-- **********************************************************************
           ********************* RTFTEMPLTE IMPLEMENTATION  *********************
           ********************************************************************** -->
 
        <!-- Defautlt RTFTemplate implementation  with freemarker template engine  -->
        <bean id="ftlRTFTemplate"
                        class="net.sourceforge.rtf.RTFTemplate"
                        singleton="false" >
                <property name="parser" ref="defaultRTFParser" />
                <property name="transformer" ref="ftlTransformer" />
                <property name="templateEngine" ref="ftl" />
        </bean>
 
        <!-- Defautlt RTFTemplate implementation with velocity template engine  -->
        <bean id="vmRTFTemplate"
                        class="net.sourceforge.rtf.RTFTemplate"
                        singleton="false" >
                <property name="parser" ref="defaultRTFParser" />
                <property name="transformer" ref="vmTransformer" />
                <property name="templateEngine" ref="vm" />
        </bean>
 
  <!-- **********************************************************************
           *********************    RTFDOCUMENT PARSER      *********************
           ********************************************************************** -->
 
        <!-- Defautlt RTFDocument Parser  -->
        <bean id="defaultRTFParser"
                        class="net.sourceforge.rtf.handler.RTFDocumentHandler"
                        singleton="true" >
        </bean>
 
 
  <!-- **********************************************************************
           ********************* FREEMARKER TEMPLATE ENGINE *********************
           ********************************************************************** -->
 
  <!-- Freemarker template engine  -->
  <bean id="ftl"
                class="net.sourceforge.rtf.template.freemarker.FreemarkerTemplateEngineImpl"
                singleton="false" >
         <property name="freemarkerConfiguration" ref="ftlConfiguration" />
  </bean>
 
  <!-- Freemarker Configuration  -->
  <bean id="ftlConfiguration"
                class="freemarker.template.Configuration"
                singleton="true" >
  </bean>
 
  <!-- Freemarker RTF Document Transformer  -->
  <bean id="ftlTransformer"
                class="net.sourceforge.rtf.template.freemarker.RTFFreemarkerTransformerImpl"
                singleton="true" >
  </bean>
 
  <!-- **********************************************************************
           *********************  VELOCITY TEMPLATE ENGINE  *********************
           ********************************************************************** -->
 
  <bean id="vm"
                class="net.sourceforge.rtf.template.velocity.VelocityTemplateEngineImpl"
                singleton="false" >
         <property name="velocityEngine" ref="vmEngine" />
  </bean>
 
  <!-- VelocityEngine Configuration  -->
  <bean id="vmEngine"
                class="org.apache.velocity.app.VelocityEngine"
                singleton="true" >
  </bean>
 
  <!-- Velocity RTF Document Transformer  -->
  <bean id="vmTransformer"
                class="net.sourceforge.rtf.template.velocity.RTFVelocityTransformerImpl"
                singleton="true" >
  </bean>
 
</beans>
J'ai créé mon .rtf dans l'emplacement :

C:/Cabinet/documents/certificats_medicales/templateCertificat.rtf.

Ma classe que j'ai créé ne donne aucune erreur de compile, j'ai ajouté les jar de spring etc...(J'utilise une application SWING).

Lorsque j'éxcécute la classe, j'obtiens l'erreur suivante :

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
21 déc. 2011 17:10:56 org.springframework.context.support.AbstractApplicationContext refresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@110d81b: display name [org.springframework.context.support.ClassPathXmlApplicationContext@110d81b]; startup date [Wed Dec 21 17:10:56 WET 2011]; root of context hierarchy
21 déc. 2011 17:10:56 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [net/sourceforge/rtf/rtftemplate-config.xml]
21 déc. 2011 17:10:57 org.springframework.context.support.AbstractApplicationContext refresh
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@110d81b]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1e4457d
21 déc. 2011 17:10:57 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1e4457d: defining beans [ftlRTFTemplate,vmRTFTemplate,defaultRTFParser,ftl,ftlConfiguration,ftlTransformer,vm,vmEngine,vmTransformer]; root of factory hierarchy
21 déc. 2011 17:10:57 org.apache.commons.digester.Digester endElement
GRAVE: End event threw error
java.lang.NoSuchMethodError: org.apache.commons.beanutils.BeanUtils.setProperty(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        at org.apache.commons.digester.BeanPropertySetterRule.end(BeanPropertySetterRule.java:198)
        at org.apache.commons.digester.Digester.endElement(Digester.java:1332)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.apache.commons.digester.Digester.parse(Digester.java:1887)
        at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:71)
        at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:32)
        at net.sourceforge.rtf.template.AbstractRTFDocumentTransformer.<clinit>(AbstractRTFDocumentTransformer.java:38)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:732)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:720)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:144)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:279)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:360)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
        at net.sourceforge.rtf.helper.RTFTemplateBuilder.newRTFTemplateBuilder(RTFTemplateBuilder.java:45)
        at rachid.cabinetMedical.transverse.beans.RtfTemplateExemple.main(RtfTemplateExemple.java:29)
21 déc. 2011 17:10:58 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1e4457d: defining beans [ftlRTFTemplate,vmRTFTemplate,defaultRTFParser,ftl,ftlConfiguration,ftlTransformer,vm,vmEngine,vmTransformer]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ftlTransformer' defined in class path resource [net/sourceforge/rtf/rtftemplate-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.BeanUtils.setProperty(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
Caused by: java.lang.NoSuchMethodError: org.apache.commons.beanutils.BeanUtils.setProperty(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        at org.apache.commons.digester.BeanPropertySetterRule.end(BeanPropertySetterRule.java:198)
        at org.apache.commons.digester.Digester.endElement(Digester.java:1332)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.apache.commons.digester.Digester.parse(Digester.java:1887)
        at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:71)
        at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:32)
        at net.sourceforge.rtf.template.AbstractRTFDocumentTransformer.<clinit>(AbstractRTFDocumentTransformer.java:38)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:732)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:720)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:144)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:279)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:360)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
        at net.sourceforge.rtf.helper.RTFTemplateBuilder.newRTFTemplateBuilder(RTFTemplateBuilder.java:45)
        at rachid.cabinetMedical.transverse.beans.RtfTemplateExemple.main(RtfTemplateExemple.java:29)
Java Result: 1
Je vois pas pourquoi il n'arrive pas à instancier le bean ftlTransformer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ftlTransformer' defined in class path resource [net/sourceforge/rtf/rtftemplate-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.BeanUtils.setProperty(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
Caused by: java.lang.NoSuchMethodError: org.apache.commons.beanutils.BeanUtils.setProperty(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        at org.apache.commons.digester.BeanPropertySetterRule.end(BeanPropertySetterRule.java:198)
Merci d'avance pour votre aide.