Bonjour,
Ca fait 3 mois que je suit un stage en informatique. Mon objectif est de faire une application permettant de donner des informations complementaires a un Powerpoint.
Au debut ca marchait bien, et j'avais reussi a faire une application en IHM Java operationnelle.

Mais les choses ont commencés a se corser lorsque mon maitre de stage a suggere de faire cet application en format web, et donc d'utiliser du JEE.

Ca fait donc une semaine que j'essai de faire marcher tout ca. Ce qui etait operationnel dans l'IHM ne l'est plus ici. Je n'arrive meme pas a detecter la source du probleme, c'est pourquoi je viens vers vous pour demander de l'aide, en tant que dernier espoir.

Ma servlet
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
package servlet;
 
import beans.Slide;
import beans.Slides;
import controller.Open;
import forms.InfosSlides;
 
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import javax.swing.*;
 
public class Home extends HttpServlet {
    private String ATT_FICHIER   = "fichier";
    private String ATT_SLIDE = "slide";
    private String CHEMIN = "chemin";
    private String VUE = "/WEB-INF/Home.jsp";
 
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
                /* Affichage de la page d'upload */
 
 
        //creation du groupe de slides a partir du chemin
        Slides slides = new Slides("c:/fichiers/Test.pptx",true);
 
        //test sur le slide numnero 1
        request.setAttribute(ATT_SLIDE,slides.getPage(1));
 
        //envoi des donnees
        this.getServletContext().getRequestDispatcher(VUE).forward( request, response );
    }
 
    public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
    }
}

Slides.java (les methodes qui nous interessent) :
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
package beans;
 
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.vocabulary.RDFS;
 
import java.util.ArrayList;
 
/**
 * Created by Nicolas on 2014/05/20.
 */
public class Slides {
 
    protected ArrayList<Slide> slides;
 
 
 
    public Slides() {
        //constructeur vide
        slides = new ArrayList<Slide>();
    }
 
    public Slides(String source, boolean res){
        //constructeur. "source" donne le chemin du ppt. res est vrai si c'est un pptx, et faux si c'est un ppt. 
        slides = getAllSlides(source, res);
    }
 
 
    //Fonction tranferant les slides du ppt dans une nouvelle instance Slides.
    public ArrayList<Slide> getAllSlides(String source, boolean res){
        ArrayList<Slide> slides = new ArrayList<Slide>();
        Slide slide;
        int page = 0;
 
        do{
            page++;
            slide = new Slide(page,source,res);
            slides.add(slide);
        }while(slide.getPage() < slide.getAll());
 
        return slides;
 
    }
 
    public Slide getPage(int page){
        return slides.get(page);
    }

Slide.java (classe pour un seul slide du ppt)
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
package beans;
 
 
 
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.hslf.usermodel.SlideShow;
 
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
 
/**
 * Created by Nicolas on 2014/05/19.
 */
public class Slide {
    private int page;
    private ImageIcon image;
    private int all;
 
 
 
    //Constructeur. page commence a 1.
    public Slide(int page, String source, boolean res) {
        this.page = page;
 
        this.image = getImage(source,res);
    }
 
 
//methode permettant d'extraire l'image du slide.
    public ImageIcon getImage(String source,boolean res){
        try {
            File file = new File(source);
            if(res) {
                XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(source));
                XSLFSlide[] slides = ppt.getSlides();
                Dimension pgsize = ppt.getPageSize();
 
                this.title_name = slides[this.page-1].getTitle();
 
 
                BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
                Graphics2D graphics = img.createGraphics();
                graphics.setPaint(Color.white);
                graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
 
                slides[this.page-1].draw(graphics);
 
                ImageIcon icon = new ImageIcon(img);
                this.all = slides.length;
 
                System.out.println(this.all);
 
                return icon;
            }
            else{
                SlideShow ppt = new SlideShow(new HSLFSlideShow(source));
                org.apache.poi.hslf.model.Slide[] slides = ppt.getSlides();
                Dimension pgsize = ppt.getPageSize();
 
                this.title_name = slides[this.page-1].getTitle();
 
 
                BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
                Graphics2D graphics = img.createGraphics();
                graphics.setPaint(Color.white);
                graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
 
                ImageIcon icon = new ImageIcon(img);
                this.all = slides.length;
 
                return icon;
            }
 
 
        } catch (Exception e) {
            e.printStackTrace();
 
            return null;
        }
    }


Le message d'erreur :

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"C:\Program Files\Java\jdk1.7.0_07\bin\java" -Dcatalina.base=C:\Users\Nicolas\.IntelliJIdea13\system\tomcat\Unnamed_projectStage_3 -Dcatalina.home=C:\tomcat7 -Djava.io.tmpdir=C:\tomcat7\temp -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=127.0.0.1 -cp C:\tomcat7\bin\bootstrap.jar;C:\tomcat7\bin\tomcat-juli.jar org.apache.catalina.startup.Bootstrap start
[2014-08-14 09:00:21,309] Artifact projectStage:war exploded: Server is not connected. Deploy is not available.
8 14, 2014 9:00:22 ?? org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_07\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\MySQL\MySQL Server 5.5\bin;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\opencv\build\x86\vc10\bin;C:\Program Files\Java\jdk1.7.0_07\bin;c:\Borland\Bcc55\Bin;C:\Users\nakano\Desktop\0213\;;C:\TDM-GCC-64\bin;.
8 14, 2014 9:00:22 ?? org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
8 14, 2014 9:00:22 ?? org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
8 14, 2014 9:00:22 ?? org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 766 ms
8 14, 2014 9:00:22 ?? org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
8 14, 2014 9:00:22 ?? org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.50
8 14, 2014 9:00:22 ?? org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
8 14, 2014 9:00:22 ?? org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
8 14, 2014 9:00:22 ?? org.apache.catalina.startup.Catalina start
INFO: Server startup in 67 ms
Connected to server
[2014-08-14 09:00:22,509] Artifact projectStage:war exploded: Artifact is being deployed, please wait...
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
8 14, 2014 9:00:25 ?? org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
[2014-08-14 09:00:25,404] Artifact projectStage:war exploded: Artifact is deployed successfully
[2014-08-14 09:00:25,404] Artifact projectStage:war exploded: Deploy took 2,895 milliseconds
8 14, 2014 9:00:26 ?? org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
org.apache.poi.POIXMLException: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:82)
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:87)
	at beans.Slide.getImage(Slide.java:174)
	at beans.Slide.<init>(Slide.java:50)
	at beans.Slides.getAllSlides(Slides.java:114)
	at beans.Slides.<init>(Slides.java:35)
	at servlet.Home.doGet(Home.java:39)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
	at org.apache.poi.xslf.usermodel.XSLFFactory.createDocumentPart(XSLFFactory.java:66)
	at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
	at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:80)
	... 27 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	at org.apache.poi.xslf.usermodel.XSLFFactory.createDocumentPart(XSLFFactory.java:64)
	... 30 more
Caused by: java.lang.NoClassDefFoundError: org/openxmlformats/schemas/presentationml/x2006/main/SldMasterDocument$Factory
	at org.apache.poi.xslf.usermodel.XSLFSlideMaster.<init>(XSLFSlideMaster.java:68)
	... 35 more
Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument$Factory
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
	... 36 more
 
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
	java.util.ArrayList.rangeCheck(ArrayList.java:604)
	java.util.ArrayList.get(ArrayList.java:382)
	beans.Slides.getPage(Slides.java:101)
	servlet.Home.doGet(Home.java:41)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Voila voila. Je commence un peu a paniquer car je dois finir ca pour la semaine prochaine, et que sans ca je suis bloqué. Comme je l'ai dis je n'arrive pas a comprendre d'ou vient l'erreur, surtout que sur une autre plateforme ca marchait correctement !
Je crois que j'ai deja passé chaque ligne du message d'erreur en recherche google, sans succes

Merci d'avance, et si vous avez besoin d'infos supplementaires, n'hesitez pas !


(ps : desole pour les accents, je suis sur un clavier qwerty...)