IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Derby en mode Embedded


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Derby en mode Embedded
    Bonjour,

    Voici mon problème : je veux utiliser une BdD derby en mode embarqué.

    Mon appli fonctionne correctement sur Netbeans et c'est au moment ou je souhaite l'utiliser sans Netbeans qu'il n’accède plus à ma BdD.

    J'ai regardé tous les posts concernant ce problème et je ne vois pas de solution.

    Le driver est bien utilisé comme le montre la log, mais c'est lors du lancement de ma première requête que la BdD ne répond plus.

    Voici le message d'erreur :

    *** Driver loaded.
    Exception in thread "main" java.lang.NoClassDefFoundError: Bean/Type_inconnu
    at dao.DAOType_inconnu.existeTypeByType(DAOType_inconnu.java:134)
    at gestionlistefilm.EnregistrementFilms.verif_type(EnregistrementFilms.java:137)
    at gestionlistefilm.EnregistrementFilms.debut(EnregistrementFilms.java:67)
    at gestionlistefilm.GestionListeFilm.main(GestionListeFilm.java:41)
    Caused by: java.lang.ClassNotFoundException: Bean.Type_inconnu
    at java.net.URLClassLoader$1.run(Unknown Source)

    voici la classe de connexion :

    Code : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    package jdbc;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    //---------------------------------------------------------
     
    public class JdbcUtil {
     
        private static final String DRIVER_NAME
                = "org.apache.derby.jdbc.EmbeddedDriver";
        private static final String URL = "jdbc:derby:C:/Users/pbonnet/Documents/NetBeansProjects/GestionListeFilm/ListeFichiers;create=true";
     
        private static final String USER = "APP";
        private static final String PASSWORD = "";
     
        static {
            // Chargement du pilote
            // Ne doit avoir lieu qu'une seule fois
            try {
                Class.forName(DRIVER_NAME).newInstance();
                System.out.println("*** Driver loaded.");
            } catch (ClassNotFoundException e) {
                System.err.println("*** ERROR: Driver " + DRIVER_NAME + " not found");
            } catch (InstantiationException e) {
                System.err.println("*** ERROR: Impossible to create an instance of " + DRIVER_NAME);
                System.err.println(e.getMessage());
            } catch (IllegalAccessException e) {
                System.err.println("*** ERROR: Impossible to create an instance of " + DRIVER_NAME);
                System.err.println(e.getMessage());
            }
        }
     
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(URL, USER, PASSWORD);
        }
     
        public static void close(final Connection cx) {
            if (cx != null) {
                try {
                    cx.close();
                } catch (SQLException e) {
                    System.err.println("Impossible to close connection");
                    System.err.println(e.getMessage());
                }
            }
        }
     
        public static void close(final Statement st) {
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    System.err.println("Impossible to close statement");
                    System.err.println(e.getMessage());
                }
            }
        }
     
        public static void close(final ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    System.err.println("Impossible to close resultSet");
                    System.err.println(e.getMessage());
                }
            }
        }
     
        public static String getURL() {
            return URL;
        }
     
    }
    Le message d'erreur n'indique pas que la BdD n'est pas accessible c'est qu'il la trouve bien.
    Sinon il mettrait un autre message.
    Voici ma classe d'interrogation à la BdD :
    Code : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package dao;
     
    import Bean.Type_inconnu;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    import jdbc.DAOException;
    import jdbc.JdbcUtil;
     
    public class DAOType_inconnu {
     
     
     
        public Type_inconnu getTypeByType(final String Type)
                throws DAOException {
     
            Connection cx = null;
            PreparedStatement pst = null;
            ResultSet rs = null;
            Type_inconnu type = null;
     
            // Tester la connexion avec la BdD
            try {
                Connection connection = JdbcUtil.getConnection();
                // utilisation de la connexion
                connection.close();
            } catch (SQLException e) {
                throw new DAOException(
                        "La base de données n'est pas accessible(" + JdbcUtil.getURL() + ")",
                        e);
            }
     
            try {
     
                cx = JdbcUtil.getConnection();
                //pst = cx.prepareStatement("SELECT * FROM attaquecatapulte where idemplacement = ?");
                pst = cx.prepareStatement("SELECT * FROM TYPE_inconnu WHERE TYPE = ?");
                pst.setString(1, Type);
                rs = pst.executeQuery();
                while (rs.next()) {
                    type = new Type_inconnu(
                            rs.getInt("INDEX"),
                            rs.getString("TYPE"),
                            rs.getString("CATEGORIE"),
                            rs.getString("NOM"));
                    return type;
                }
            } catch (SQLException e) {
                throw new DAOException(
                        "Impossible to process getTypeByType(TYPE : " + type + ")",
                        e);
            } finally {
                JdbcUtil.close(rs);
                JdbcUtil.close(pst);
                JdbcUtil.close(cx);
            }
            return null;
        }
     
        public boolean existeTypeByType(final String Type)
                throws DAOException {
     
            Connection cx = null;
            PreparedStatement pst = null;
            ResultSet rs = null;
            Type_inconnu type = null;
     
            // Tester la connexion avec la BdD
            try {
                Connection connection = JdbcUtil.getConnection();
                // utilisation de la connexion
                connection.close();
            } catch (SQLException e) {
                throw new DAOException(
                        "La base de données n'est pas accessible(" + JdbcUtil.getURL() + ")",
                        e);
            }
     
            try {
     
                cx = JdbcUtil.getConnection();
                pst = cx.prepareStatement("SELECT * FROM TYPE_inconnu WHERE TYPE = ?");
                pst.setString(1, Type);
                rs = pst.executeQuery();
                while (rs.next()) {
                    type = new Type_inconnu(
                            rs.getInt("INDEX"),
                            rs.getString("TYPE"),
                            rs.getString("CATEGORIE"),
                            rs.getString("NOM"));
                    return true;
                }
            } catch (SQLException e) {
                throw new DAOException(
                        "Impossible to process existeTypeByType(TYPE : " + Type + ")",
                        e);
            } finally {
                JdbcUtil.close(rs);
                JdbcUtil.close(pst);
                JdbcUtil.close(cx);
            }
            return false;
        }
     
    }
    Le bean existe, l'appli fonctionne sous NetBeans.
    Faut-il installer autre chose que le JDK et les derby.jar ?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    La classe Type_inconnu n'est pas dans ton ClassPath

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Pourtant elle est bien dans le build :

    Nom : classes.png
Affichages : 151
Taille : 27,5 Ko

    Dans le build il y a 4 répertoires : bean, dao, gestionlistefilm (main) et jdbc.

    Le main est dans le répertoire gestionlistefilm et il accède correctement aux classes qui sont dans le répertoire jdbc (la log montre que le driver est chargé).
    Pourquoi il n’accéderait pas aux classes qui se trouvent dans le répertoire bean?

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Citation Envoyé par Gwenc Voir le message
    et c'est au moment ou je souhaite l'utiliser sans Netbeans qu'il n’accède plus à ma BdD
    Comment lances-tu ton application dans ce cas ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    par une ligne de commande ou par un cmd => même résultat dans les deux cas

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    ça peut pas être un problème de case qd même?
    La log veut acceder à Bean/Type_inconnu alors que les classes se trouvent dans bean.Type_inconnu.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Si c'était bien ça. J'ai modifié mon package qui était en majuscule par une minuscule et ça fonctionne.

    Merci pour ton aide plawyx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JAR et Derby Embedded
    Par Invité dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 10/08/2012, 12h19
  2. trie caractéres accentuées avec derby embedded
    Par Mattorre dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 13/07/2010, 11h01
  3. Probleme Pivot et Derby embedded
    Par Mattorre dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/07/2010, 18h23
  4. derby embedded schéma introuvable
    Par Passarinho44 dans le forum NetBeans
    Réponses: 0
    Dernier message: 15/12/2008, 22h16
  5. Firebird en Mode "embedded"
    Par helmis dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/04/2008, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo