Bonjour,

J'ai crée une procédure stockée faisant appel à du code Java. Le problème est que lors de l'exécution PL/SQL, le message d'erreur suivant apparaît :

ORA-29532: appel Java arrêté par une exception Java non interceptée : java.lang.NoClassDefFoundError
Le bout de code en question est le suivant:

Code Java : 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
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "HASH_SHA1"
AS package pg_hash_sha1;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.xml.security.utils.Base64;
 
public class hash {
 
        public static String sha1 (String passwdClair)
		{
			byte[] uniqueKey = passwdClair.getBytes();
			byte[] hash = null;
			try
			{
		      // on récupère un objet qui permettra de crypter la chaine
		      hash = MessageDigest.getInstance("SHA-1").digest(uniqueKey);
            } catch (NoSuchAlgorithmException e) {
                throw new Error("no SHA-1 support in this VM");
              }
 
			String buffer = Base64.encode(hash);
			return buffer;	
		}
 
};
/

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE OR REPLACE FUNCTION hash_blog(p_content varchar2) RETURN varchar2
 AS LANGUAGE JAVA
  NAME 'pg_hash_sha1.hash.sha1(java.lang.String) return java.lang.String';
/
 
SELECT hash_blog('4238960308960013') FROM dual;

Avez-vous une idée pour résoudre cette erreur ?

Merci par avance