Bonjour,
 
Je ne parviens pas à utiliser une fonction d'un "Java External".
 

je cherche des informations pour utiliser le create function avec DERBY

 

 

 

j'ai réalisé une classe java et un fichier jar avec NetBeans 6.9.1, puis un autre jar avec la commande jar cf ...

 

 

j'ai ensuite réalisé deux tests avec chacun des jar

 

 

j'ai exécuté : call sqlj.remove_jar('INSCRIPTIONENLIGNE002.POURDBDERBY',0); CALL SQLJ.install_jar('C:\Documents and Settings\GONTHIER-F\Mes documents\ProjetReservation\BaseDeDonnees\DerbyInverse\NetBeans\PourDBDerby\distDBDerby\PourDBDerby.jar', 'INSCRIPTIONENLIGNE002.POURDBDERBY', 0); CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath', 'INSCRIPTIONENLIGNE002.POURDBDERBY');

 

 

j'ai arrêté et démarré javaDB.

 

 

 j'ai exécuté : create function nbJour(dated VARCHAR(10),datef VARCHAR(10)) returns integer language java external name 'PourDBDerby.nbJour' parameter style java no sql RETURNS NULL ON NULL INPUT ; grant execute on function INSCRIPTIONENLIGNE002.nbJour to PUBLIC;

 

 

 

j'ai exécuté : select nbJour(t."DateDebutReunion",t."DateFinReunion") from INSCRIPTIONENLIGNE002.TR t;

 

 

Quel que soit le cas j'obtiens l'erreur : Code erreur -1, état SQL 42X51: La classe 'PourDBDerby' n'existe pas ou est inaccessible. Cela peut se produire si la classe n'est pas publique.

Code erreur 99999, état SQL XJ001: Exception Java : 'PourDBDerby: java.lang.ClassNotFoundException'.

 

Voici le code de la classe java :

 

 

/*.
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pourderby;

import java.sql.SQLException;
import java.util.Date;

/**.
 *
 * @author GONTHIER-F
 */
public class PourDBDerby {

    /**.
     * Nombre de seconde dans une heure
     */
    private static final int TROISMC = 3600;
    /**.
     * Nombre d'heure dans une journée
     */
    private static final int VINGT4 = 24;
    /**.
     * Nombre de milliseconde dans une seconde
     */
    private static final int MILLE = 1000;
    /**.
     * Durée d'une journée en milliseconde
     */
    private static final long UNJOUR = TROISMC * VINGT4 * MILLE;

    public PourDBDerby() {
    }

    /**.
     * Retourne le nombre de millisecondes depuis Janvier 1, 1970, 00:00:00 GMT
     * représenté par cet objet Date.
     * @param datea java.util.Date
     * @return nombre de millisecondes
     */
    public static long getTime(final Date datea) throws SQLException {
        return datea.getTime();
    }

    /**.
     * Convertit une chaîne au format date JDBC échapper à une valeur Date.
     * AAAA-MM-JJ
     * @param datea chaîne au format AAAA-MM-JJ
     * @return la date du type java.util.Date
     */
    public static Date datetoInt(final String datea) throws SQLException {
        return java.sql.Date.valueOf(datea);
    }

    /**.
     * Calcule le nombre de jour entre deux dates au format AAAA-MM-JJ
     * Si deba est plus grande que fina, le nombre de jour retourné st négatif
     * @param deba date de début
     * @param fina date de fin
     * @return le nombre de jour entre les deux dates.
     */
    public static int nbJour(final String deba, final String fina) throws SQLException {
        final java.util.Date deb = PourDBDerby.datetoInt(deba);
        final java.util.Date fin = PourDBDerby.datetoInt(fina);
        final long ldeb = PourDBDerby.getTime(deb);
        final long lfin = PourDBDerby.getTime(fin);
        final long duree = lfin - ldeb;
        return (int) (duree / UNJOUR);
    }

    /**.
     * Calcule le nombre de jour entre deux dates de type java.util.Date
     * Si deba est plus grande que fina, le nombre de jour retourné st négatif
     * @param deba date de début
     * @param fina date de fin
     * @return le nombre de jour entre les deux dates.
     */
    public static int nbJour(final Date deba, final Date fina) throws SQLException {
        final long l = PourDBDerby.getTime(deba);
        final long lf = PourDBDerby.getTime(fina);
        final long duree = lf - l;
        return (int) (duree / UNJOUR);
    }
}

 

Que dois-je faire ?

 

Merci.