title: java.lang.NoClassDefFoundError: org/jasypt/util/text/BasicTextEncryptor
body: <p>I defined a class named <code>CryptUrl</code> that uses <code>BasicTextEncryptor</code> to encrypt and decrypt a string.
  I tried to call the <code>decrypt</code> function in my servlet but I ended up with the error</p>
  
  <blockquote>
    <p>java.lang.NoClassDefFoundError:
    org/jasypt/util/text/BasicTextEncryptor</p>
  </blockquote>
  
  <p>This is my Crypt class:</p>
  
  <pre><code>import org.jasypt.util.text.BasicTextEncryptor;
  
  public class CryptUrl {
      static String myEncryptionPassword ="key";
      static String message ="message";        
  
      public static String encrypt(String text) {
          try {   
              BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
              textEncryptor.setPassword(myEncryptionPassword);
              String myEncryptedPassword = textEncryptor.encrypt(text);            
  
              return myEncryptedPassword;
  
          } catch (Exception e) {
              return null;
          }
      }
  
      public static String decrypt(String text) {
          try {
              BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
              textEncryptor.setPassword(myEncryptionPassword);
              String plainText = textEncryptor.decrypt(text);
              return plainText;
          } catch (Exception e) {
              System.out.println(e);
              return null;
          }
      }
  }
  </code></pre>
  
  <p>and this is the servlet where I call the function</p>
  
  <pre><code>public class Download extends HttpServlet {
  
      private static final long serialVersionUID = 1L;
      public static final int TAILLE_TAMPON = 10240; // 10ko
      public static String message ;
  
      public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
          /*
           * Lecture du paramÃ¨tre 'chemin' passÃ© Ã  la servlet via la dÃ©claration
           * dans le web.xml
           */
          String chemin = this.getServletConfig().getInitParameter( "chemin" );
  
          /*
           * RÃ©cupÃ©ration du chemin du fichier demandÃ© au sein de l'URL de la
           * requÃªte
           */
          String fichierRequis = request.getPathInfo(); 
          Path p = Paths.get(fichierRequis);
       //   System.out.println(p.subpath(0, p.getNameCount()));
          message =CryptUrl.decrypt(p.subpath(0, p.getNameCount()).toString());
  
          /* VÃ©rifie qu'un fichier a bien Ã©tÃ© fourni */
          if ( fichierRequis == null ) {
              /*
               * Si non, alors on envoie une erreur 404, qui signifie que la
               * ressource demandÃ©e n'existe pas
               */
              response.sendError( HttpServletResponse.SC_NOT_FOUND );
              return;
          }
  
          /*
           * DÃ©code le nom de fichier rÃ©cupÃ©rÃ©, susceptible de contenir des
           * espaces et autres caractÃ¨res spÃ©ciaux, et prÃ©pare l'objet File
           */
  
  
          fichierRequis = URLDecoder.decode( fichierRequis, "UTF-8" );
          File fichier = new File( chemin, fichierRequis);
  
          /* VÃ©rifie que le fichier existe bien */
          if ( !fichier.exists() ) {
              /*
               * Si non, alors on envoie une erreur 404, qui signifie que la
               * ressource demandÃ©e n'existe pas
               */
              response.sendError( HttpServletResponse.SC_NOT_FOUND );
              return;
          }
  
          /* RÃ©cupÃ¨re le type du fichier */
          String type = getServletContext().getMimeType( fichier.getName() );
  
          /*
           * Si le type de fichier est inconnu, alors on initialise un type par
           * dÃ©faut
           */
          if ( type == null ) {
              type = "application/octet-stream";
          }
  
          /* Initialise la rÃ©ponse HTTP */
          response.reset();
          response.setBufferSize( TAILLE_TAMPON );
          response.setContentType( type );
          response.setHeader( "Content-Length", String.valueOf( fichier.length() ) );
          response.setHeader( "Content-Disposition", "attachment; filename=\"" + fichier.getName() + "\"" );
  
          /* PrÃ©pare les flux */
          BufferedInputStream entree = null;
          BufferedOutputStream sortie = null;
          try {
              /* Ouvre les flux */
              entree = new BufferedInputStream( new FileInputStream( fichier ), TAILLE_TAMPON );
              sortie = new BufferedOutputStream( response.getOutputStream(), TAILLE_TAMPON );
  
              /* Lit le fichier et Ã©crit son contenu dans la rÃ©ponse HTTP */
              byte[] tampon = new byte[TAILLE_TAMPON];
              int longueur;
              while ( ( longueur = entree.read( tampon ) ) &gt; 0 ) {
                  sortie.write( tampon, 0, longueur );
              }
          } finally {
              sortie.close();
              entree.close();
          }
      }
  </code></pre>