NoClassDefFoundError

  • Themenstarter Themenstarter Manuela
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Manuela

Gast
Hallo ich habe ein Problem,
und komme nicht klar.


das ist meine Fehlermeldung

java.lang.NoClassDefFoundError: javax/crypto/spec/PBEParameterSpec
at server.schluss.Verschluss.init(Verschluss.java:54)

und der code sieht so aus.

Code:
import javax.crypto.*;
import javax.crypto.spec.*;

public class Verschluss {

  final private transient static String password = "jeLaengerJeBesserPasswort";
  final public transient byte [] salt = { (byte) 0xc9, (byte) 0xc9,(byte) 0xc9,(byte) 0xc9,(byte) 0xc9,(byte) 0xc9,(byte) 0xc9,(byte) 0xc9};
 
  final public int iterations = 3;

  protected Verschluss() {
 //   java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE()); // implizit bereits erledigt!
  }

  /** instance */
  private static Verschluss instance;

  /** Singleton Factory
   * @return instance
   */
  public static Verschluss getInstance () {
    if (instance == null) {
      instance = new Verschluss ();
    }
    return instance;

  }


  /** Notwendige Instanczen */
  private Cipher encryptCipher;
  private Cipher decryptCipher;
  private sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
  private sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

  /** Verwendete Zeichendecodierung */
  private String charset = "UTF16";

  /**
   * Initialisiert den Verschlüsselungsmechanismus
   * @param pass char[]
   * @param salt byte[]
   * @param iterations int
   * @throws SecurityException
   */
  public void init (final char[] pass, final byte[] salt, final int iterations) throws SecurityException {
    try {
   -->> Hier ist die zeile 54     PBEParameterSpec ps = new PBEParameterSpec(salt, 25);
      final SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWitndDES");
      final SecretKey k = kf.generateSecret(new PBEKeySpec(pass));
      encryptCipher = Cipher.getInstance("PBEMD5AndDES/CBC/PKPadding");
      encryptCipher.init (Cipher.ENCRYPT_MODE, k, ps);
      decryptCipher = Cipher.getInstance("PBEMD5AndDES/CBC/PKPadding");
      decryptCipher.init (Cipher.DECRYPT_MODE, k, ps);
    }
    catch (Exception e) {
      throw new SecurityException("Could not initialize CryptoLibrary: " +
                                   e.getMessage());
    }
  }


was sehr seltsam ist das es in der Entwicklungsumbgebung(NetBeans6.1) ohne Probleme läuft.
nur wenn ich es als .Jar laufen lasse geht es nicht mehr und es kommt der obenbeschriebene Fehler.

Gruß Manuela
 
wahrscheinlich ist die entsprechende jar schlicht nicht im classpath. guck mal im projekt nach, welche jars er dazugepackt hat. das javax zeug ist häufig in eigene jars ausgelagert.
 
hallo einer weniger,

jetzt kommt

java.lang.SecurityException: Could not initialize CryptoLibrary: PBEWithMD5AndDES SecretKeyFactory not available
at server.schluss.Verschluss.init(Verschluss.java:67)

Hilfe, ich verstehe nur noch Bahnhof

mit NetBeans6.1 geht es und als jar file geht es nicht.

Gruß Manuela
 
hallo,
keiner eine Idee !!! , was ich noch machen kann.

Gruß Manuela
 
SecretKeyFactory.getInstance("PBEWitndDES")

es gibt wohl keine implementierung von PBEWitndDES
 
hallo,

PBEParameterSpec ps = new PBEParameterSpec(salt, 20);
alt = alt +" hallo";
SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); //PBEWithMD5AndDES
alt = alt +" nein";
SecretKey k = kf.generateSecret(new PBEKeySpec(pass));
encryptCipher = Cipher.getInstance("PBEWithMD5AndDES/CBC/PKCS5Padding");
encryptCipher.init (Cipher.ENCRYPT_MODE, k, ps);
decryptCipher = Cipher.getInstance("PBEWithMD5AndDES/CBC/PKCS5Padding");
decryptCipher.init (Cipher.DECRYPT_MODE, k, ps);

nein das kann es auch nicht sein denn es funktioniert in der Entwicklungsumgebung.
Sobald das programm als server1.jar laufen soll geht der halt mit der Fehlermeldung raus.

Gruß Manuela
 
Hallo,

was kann ich noch machen das ich auch in der jar datei funktioniert?????


Gruß Manuela
 
Kannst du mit dem Code mal eine komplett kompilierbare/lauffähige Klasse erstellen, man kann sonst dein Problem schlecht nachvollziehen. Ich nutze auch NetBeans, müsste mir das Problem aber mal "live" anschauen, um zu sehen, wo das Problem liegt.
 
Für alle die vielleicht das gleiche oder ähnliche Problem haben, wäre es interessant zu lesen, wie du das Problem behoben hast...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben