2010-12-15 4 views
1

J'utilise Apache FileUpload et je reçois un java.lang.NoClassDefFoundErrorjava.lang.NoClassDefFoundError lors de l'utilisation d'Apache FileUpload

Ma première pensée était de vérifier si le .jar était sur le chemin de classe - ce que je remarque (dans Eclipse) est que, dans la zone des bibliothèques, il y a deux sections différentes:

  • Apache Tomcat v6.0
  • Web App bibliothèques

Tous les ot ses bibliothèques sont répertoriées sous "Web App Libraries" et cette bibliothèque particulière est répertoriée sous Apache Tomcat v6.0

Je suppose que cela cause le problème ... mon code est ici-bas ... mais je pense que c'est un problème de configuration plutôt que d'un problème de code.

Enfin - le fichier web.xml n'est pas le problème car j'ai retiré le fichier FileUpload du servlet et le servlet est trouvé très bien.

public class SaveImage extends HttpServlet{ 

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
    System.out.println("Got here"); 
    response.setContentType("text/html;charset=UTF-8"); 
    boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
} 
+2

Ce * doit être un problème de chemin de classe. Ce que votre IDE pense sur le classpath n'est pas aussi important que ce que pense le serveur web sur le classpath. Que contient le dossier 'WEB-INF/lib' après le déploiement de votre application (dans le répertoire cible du déploiement)? – Asaph

+0

Le fait est que le conteneur de servlets de test est intégré dans Eclipse, donc ce que Tom pense à ce que pense Eclipse sur le classpath (espérons que cela a du sens). Mais merci d'avoir éclairci cela, je sais où chercher des problèmes maintenant. – Ankur

+0

Merci Asaph, vous aviez raison, tout est résolu maintenant. Fondamentalement, j'ai besoin de supprimer certaines choses qui étaient allées sur le chemin de compilation de Tomcat et les lire dans le chemin de compilation "Web App Libraries" – Ankur

Répondre

1

Cette a être un problème de classpath. Ce que votre IDE pense sur le classpath n'est pas aussi important que ce que pense le serveur web sur le classpath. Que contient le dossier WEB-INF/lib après le déploiement de votre application (dans le répertoire cible du déploiement)? C'est ce qu'est le vrai classpath (plus les libs du serveur web, bien sûr).

Questions connexes