2016-02-28 1 views
0

Je trouve quelque chose d'intéressant, quand j'utilise myeclipse pour déployer un projet web, je peux télécharger une image avec succès, mais quand je mets .war à tomcat/webapps et démarrage tomcat, je ne peux pas télécharger l'image. Et ceci est le journal de tomcat:tomcat-use rorg.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload

java.lang.NoSuchMethodError: org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload.parseRequest(Ljavax/servlet/http/HttpServletRequest;)Ljava/util/List; 
    at dao.ImageUploadDao.upload(ImageUploadDao.java:32) 
    at servlet.imageUploadServlet.doPost(imageUploadServlet.java:42) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2407) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2396) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:744) 

Alors quelqu'un peut-il me dire pourquoi? Je pense que myeclipse peut faire quelque chose en plus. Et j'ai la solution que d'utiliser org.apache.commons.fileupload.jar à la place de org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload.jar, ce dernier appartient à tomcat lib.

Mais je pense que la solution est de cacher le fait, parce que quand je n'exporte pas org.apache.commons.fileupload.jar, j'utilise myeclipse pour déployer le projet, est également ok, cela illustre org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload.jar est également ok.

+0

Quelle version de MyEclipse utilisez-vous? Aussi, dites-vous que si vous utilisez le fichier apache fileupload jar (au lieu de jar filerpload) alors vous ne voyez pas de problème, peu importe comment l'application est déployée? –

+0

J'utilise
Version: 2014
Numéro de build: 12.0.0-20131202
Je pense que la bibliothèque de tomcat de tomcat ne possède pas de fichier apache commun, donc je ne vois pas de problème. Mais c'est pourquoi?
Lorsque j'utilise org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload, le résultat de deux déploiements est différent? – Gauss

Répondre

0

Je ne suis pas sûr d'avoir bien compris le problème, mais l'exportation vers un fichier war devrait être identique au déploiement direct sur Tomcat, à partir de MyEclipse 2014. Mais sachez que certaines dépendances (par exemple, org.apache .fileupload.jar) peut avoir d'autres dépendances, qui peuvent empêcher le chargement d'une classe, si elles ne sont pas présentes. Assurez-vous donc que toutes les dépendances nécessaires, qui n'existent pas déjà dans Tomcat, figurent dans l'assembly de déploiement (accessible depuis les propriétés du projet, dans la section MyEclipse). Les entrées ajoutées à l'assembly de déploiement sont automatiquement ajoutées au chemin de génération, mais c'est l'assembly de déploiement qui détermine les éléments à déployer. MyEclipse 2014 ne sera bientôt plus entièrement supporté, il pourrait donc être utile de penser à la mise à niveau vers MyEclipse 2015 ou 2016. Il y a eu quelques corrections de bugs dans la zone de déploiement depuis 2014 mais je ne peux pas encore dire si votre problème est un bug en 2014.

+0

Peut-être avez-vous raison, mais cela a-t-il une autre raison, comme un conflit entre les jarres, parce que la probabilité de MyEclipse'bug est trop petite? – Gauss