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 :

execption ClassNotFoundException levée


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut execption ClassNotFoundException levée
    Bonjour,
    je dois développer un programme java qui se connecte à un serveur sqlserveur

    voila la classe Connec que j'ai créée
    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
     
    import java.sql.SQLException;
    import java.sql.DriverManager;
     
    public class Connec {
     
    	private String Driver = "";
    	private String Subprotocol = "";
    	private String Subname = "";
    	private String User = "";
    	private String Password = "";
     
    	public Connec(String Un_Driver, String Un_Subprotocol, String Un_Subname, String Un_User, String Un_Password) {
     
    		this.Driver = Un_Driver;
    	    	this.Subprotocol = Un_Subprotocol;
        		this.Subname = Un_Subname; 
    	    	this.User = Un_User;
    	    	this.Password = Un_Password; 
    	}
     
    	public boolean Etablir_connection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
     
                 	try {
    			Class.forName(this.Driver).newInstance();
    			String Url = "jdbc:" + this.Subprotocol + ":" + this.Subname;
    			DriverManager.getConnection(Url, this.User, this.Password);
    			return true;
    		} catch(SQLException e) {
    			System.out.println("SQLException");
    			System.out.println(e.getMessage().toString());
    			return false;
    		} catch(ClassNotFoundException e) {
    			System.out.println("ClassNotFoundException");
    			System.out.println(e.getMessage().toString()); //erreur ici
    			return false;
    		}
    	}
     
    }
    et voici ma classe main ou j'appele la fonction établir la connection
    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
     
    import java.io.*;
    import java.sql.SQLException;
     
    public class Migration {
     
    	public static void main(String[] args) throws 
    		IOException, 
    		InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
    	{
     
    	// Recuperation des donnees du fichier passe en parametre    	
    	String Driver = ...;
    	String Subprotocol = ...;
    	String Subname = ...;
    	String User = ...;
    	String Password = ...;
     
    	// Se connecter a la base de donnees
    	Connec cnx = new Connec(Driver, Subprotocol, Subname, User, Password);
    	if (cnx.Etablir_connection())
    		System.out.println("Connection etablie");
    	else
    		System.out.println("Echec de la connection");
    	}
    }
    ce programme me retourne l'erreur ClassNotFoundException, sur le net j'ai trouvé que ca pouvais être lié au fichier jar (je précise que je suis loind d'être expert java)
    j'utilise eclipse pour lancer ce programme, j'ai donc essayé de le lancer aussi à partir d'un serveur unix (pensant que ca pouvait être lié à la configuration de mon pc)
    mais j'ai exactement la même erreur.

    merci de votre aide

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    L'erreur vient sans aucun doute de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName(this.Driver).newInstance();
    Donc question: que vaut "this.Driver" dans ton cas?
    Ensuite, ce code n'est pas standard. En général, pour se connecter à une base de données, on utilise simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName(this.Driver);
    Aussi deuxième question: où as-tu pris ce code? je te suggère d'aller lire la FAQ java de developpez.com, section "bases de données"
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    this.driver = com.microsoft.jdbc.sqlserver.SQLServerDriver

    même en enlevant .newInstance() j'ai le même problème

    merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Par défaut
    Je dis peut etre des betises ... mais peut etre que celle ci te feront avancer.
    ClassNotfoundException :
    Thrown when an application tries to load in a class through its string name using:

    * The forName method in class Class.
    * The findSystemClass method in class ClassLoader .
    * The loadClass method in class ClassLoader.

    but no definition for the class with the specified name could be found.

    En gros il ne trouve pas la classe com.microsoft.jdbc.sqlserver.SQLServerDriver. Donc soit le jar qui contient cette classe est au mauvais endroit soit il ne contient pas la définition pour cette classe.

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    j'ai l'impression que la problème vient du .jar
    comment fait on pour l'installer "proprement" et où?
    sachant que pour l'instant le programme tourne sur mon pc mais aprés il sera déployer sur diffents serveur
    donc en gros est ce que je peux faire un dossier "lib" et mettre le jar dedans?

    merci

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    en effet c'était bien un fichier .jar qui manquait (en réalité plusieurs même)
    pour infos dans éclispe il faut aller dans les propriétés du projet pour ajouter des .jar
    ceux que j'ai ajoutés sont mssqlserver.jar, msbase.jar, msutil.jar

    merci de votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2010, 11h46
  2. [RMI] ClassNotFoundException que je ne comprends tjs pas
    Par Satch dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 10/05/2007, 12h07
  3. [Sérialisation] StackOverFlowError levée
    Par ptitjack dans le forum Général Java
    Réponses: 9
    Dernier message: 04/11/2004, 13h27
  4. [EJB] ClassNotFoundException au déploiement
    Par rivierem dans le forum Java EE
    Réponses: 2
    Dernier message: 29/06/2004, 09h29
  5. [EJB] ClassNotFoundException au démarrage
    Par loulou dans le forum Java EE
    Réponses: 10
    Dernier message: 21/06/2004, 13h33

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