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 :

Erreur avec oracle.jdbc.OracleDriver


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 48
    Points
    48
    Par défaut Erreur avec oracle.jdbc.OracleDriver
    Bonjour,
    j'ai une erreur lorsque j'essaie de migrer une petite application de mysql vers Oracle.
    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
    		System.out.println("Ce qui marche");
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			System.out.println("Driver chargé !");
    		} catch (final ClassNotFoundException e) {
    			System.out.println("Erreur lors du chargement du driver" + e.getMessage());
    		}
     
    		System.out.println("Ce qui ne marche pas");
    		try {
    			Class.forName("oracle.jdbc.OracleDriver");
    		} catch (Exception e) {
    			System.out.println("--Pbm en chargeant le driver JDBC oracle.jdbc.OracleDriver");
    			e.printStackTrace();
    		}
    		try {
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    		} catch (Exception e) {
    			System.out.println("--Pbm en chargeant le driver JDBC oracle.jdbc.driver.OracleDriver--");
    			e.printStackTrace();
    		}
    Class.forName envoie une exception.
    J'essaie de vérifier que les classes en question sont bien accessibles en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		oracle.jdbc.OracleDriver myoracledriver1 = null;
    		oracle.jdbc.driver.OracleDriver myoracledriver2 = null;
    Ca compile
    un CTRL Click m'envoie vers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class OracleDriver extends oracle.jdbc.driver.OracleDriver
    {
      public static final boolean isDMS()
      {
        return false;
      }
    ou vers (je sais on s'en doutait)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class OracleDriver
      implements Driver
    {
    Les deux pavés suivant étant dans les fichiers OracleDriver.class du package oracle.jdbc de ojdbc6-12.1.0.1.jar et OracleDriver.class du package oracle.jdbc.driver de ojdbc6-12.1.0.1.jar



    Voici des précisions, le suis débutant en java mais largement confirmé en dotnet donc tout a fait en mesure de faire d'énormes erreurs dans ma démarche.

    C'est un projet que je viens de récupérer suite au départ des seuls compétences java de la maison (qui n'avaient jamais rien développé sous autre chose que mysql ou mongodb)
    Le projet utilise Maven
    ojdbc6 n'est pas récupérer depuis Maven donc
    dans pom.xml j'ai rajouté ceci derrière la déclaration mysql existante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.25</version>
    		</dependency>
    		<dependency>
    			<groupId>com.oracle</groupId>
    			<artifactId>ojdbc6</artifactId>
    		    <version>12.1.0.1</version>
    	    	<type>jar</type>
    		    <scope>test</scope>
    		</dependency>
    J'ai télécharger le jar depuis chez oracle sous le nom ojdbc6.jar et je l'ai copié en respectant une régle de nomage (que j'ai supposée) ojdbc6-12.1.0.1.jar
    Dans le répertoire créé automatiquement par le rajout dans pom.xml (à coté de tous ses petits frères mysql et divers).

    Ce rajout provoque l'affichage de ojdbc6-12.1.0.1.jar dans le répertoire "Maven Dependencies" dans le package explorer.

    Voilà, ce genre de "migration" m'aurait pris 1h sur dotnet, je pensais mettre 4 h dans le projet java~eclipse~Maven, et je suis bloqué comme un bleu.

    Aidez moi à aimer java

    Je suis presque certain que mon problème est lié à la façon de "déclarer" ojdbc6, mais je ne sais pas comment faire autrement !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par LeRoc Voir le message
    Class.forName envoie une exception.
    la quelle?
    Le projet utilise Maven
    ojdbc6 n'est pas récupérer depuis Maven
    Comme pour beaucoup de binaires propriétaires, la faute aux licences :p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.25</version>
    		</dependency>
    		<dependency>
    			<groupId>com.oracle</groupId>
    			<artifactId>ojdbc6</artifactId>
    		    <version>12.1.0.1</version>
    	    	<type>jar</type>
    		    <scope>test</scope>
    		</dependency>
    Le type n'est pas nécessaire. Le scope test dit que le package n'est disponible que pour les unit tests, en gros. Est-ce vraiment le but? Les classes de base n'y ont pas accès, donc pas l'application non plus lors de son exécution.


    J'ai télécharger le jar depuis chez oracle sous le nom ojdbc6.jar et je l'ai copié en respectant une régle de nomage (que j'ai supposée) ojdbc6-12.1.0.1.jar
    Dans le répertoire créé automatiquement par le rajout dans pom.xml (à coté de tous ses petits frères mysql et divers).
    haaa mais non :p il y a la bonne manière, facile de le faire.

    La manière basique juste pour toi
    Tu met le jar dans une répertoire temporaire, n'importe lequel, et tu fais depuis ce répertoire un mvn install:install-file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle  -DartifactId=ojdbc6 -Dversion=12.1.0.1
    Puis y a la manière "pro" qui consiste à avoir un repository maven privé dans ton entreprise, où vous pouvez déposer vos propres artefacts. Ca devrait être mis en place dès que l'on commence à avoir des projets gérés par plusieurs personnes, des serveurs d'intégration continue, etc, que tout le monde aie accès à ces artefact sans bidouille


    Pour le reste, si l'artefact a été bien installé et que tu as toujours des erreurs:

    Dis nous comment tu lance ton erreur: commande maven? run as main dans ton eclipse? Déploiement du jar et exécution?

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    Merci tchize_
    Ça n'a plus d'importance mais l'erreur c'était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	etc etc…
    Je ne comprenais pas cette erreur vu que le Ctrl Click m'envoyait sur les bonnes class/package/jar, (l'environnement de compile voyait les éléments mais pas l'exécution en débug ???)
    J'ai modifié le pom.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		<dependency>
    			<groupId>com.oracle</groupId>
    			<artifactId>ojdbc6</artifactId>
    		    <version>12.1.0.1</version>
    		</dependency>
    Et ça a changé le fonctionnement désormais ça marche sans avoir fait rien d'autre !!!
    Aille quelle humiliation…c'était si cake.
    Bon j'avais d'autres bugs mais les infos disponibles ici m'ont permis de les régler

    Je me sens obligé de dire que cet ajout de dépendance donc notamment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <type>jar</type>
    <scope>test</scope>
    Est issu d'un copier collé de je ne sais ou (si je retrouve la source j'y laisserai un commentaire pour le prochain novice).

    Donc finalement je n'aurais à priori rien à faire de spécial pour le moment.
    Mais comme il est souhaitable que je progresse dans l'usage de ce nouvel environnement, je souhaite faire ce qui aurait été correct de réaliser, je vais tout de même appliquer les précos, donc j'ai une question sur
    Citation Envoyé par tchize_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle  -DartifactId=ojdbc6 -Dversion=12.1.0.1
    Es-ce que ça nécessite de supprimer la déclaration dans mon pom.xml et de nettoyer le répertoire ...m2\repository\com\oracle\ojdbc6\12.1.0.1 créé précédemment à la suite du rajout
    De plus je ne trouve pas de mvn.exe ou mvn.cmd dans mes répertoires (j'ai hérité d'un pc préinstallé avant mon arrivée donc je découvre sa config au fil du temp).

    Vos conseils avisés:
    Je viens de dotnet : full autonome, dev tout type(web,xaml,form,services), sgbd (oracle/ms), IISS, etc. etc.
    Je pense que je vais galérer grave pour ne plus avoir le niveau "sous-stagiaire en chef" dans mon nouvel environnement de travail.
    (je précise j'ai été embauché pour mon savoir-faire en algo mais là les gars des IHM JAVA se sont tous trouvé de meilleurs jobs).
    Vous me conseillez de commencer par quoi ??? (sachant que je récupère un projet
    Eclipse/Java "batch"et javaEE/Maven/primeFaces/Mysql/MongoDB/Oracle).
    Non> Abandonner n'est pas dans les options que j'envisage

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par LeRoc Voir le message
    Es-ce que ça nécessite de supprimer la déclaration dans mon pom.xml
    Non, install file n'utilise pas ton projet, il se concentre sur le ficheir à installer

    Citation Envoyé par LeRoc Voir le message
    et de nettoyer le répertoire ...m2\repository\com\oracle\ojdbc6\12.1.0.1 créé précédemment à la suite du rajout
    C'est plus prudent pour être sur que tout soit fait dans les rêgles.
    Citation Envoyé par LeRoc Voir le message
    De plus je ne trouve pas de mvn.exe ou mvn.cmd dans mes répertoires (j'ai hérité d'un pc préinstallé avant mon arrivée donc je découvre sa config au fil du temp).
    Ca je ne peux pas t'aider sur le répertoire d'installation. Mais peut être qu'il n'est juste pas installé :p
    Vous me conseillez de commencer par quoi ??? (sachant que je récupère un projet
    Eclipse/Java "batch"et javaEE/Maven/primeFaces/Mysql/MongoDB/Oracle).
    Le batch d'abord. Maven est assez facile à prendre en mains quand tu as compris les principes de fonctionnement (cf le site web de maven, maven in 5 minutes, etc). Pour ce qui est de javaEE, primeFaces, c'est une grosse tartine.
    Pour mysql/oracle, java fournissant un abstraction, seules les chipottage spécifiques à l'implémentation SQL de chacun pourraient te donner du fil à retordre. Pour mongoDB, jamais utilisé.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le batch d'abord. Maven est assez facile à prendre en mains quand tu as compris les principes de fonctionnement (cf le site web de maven, maven in 5 minutes, etc). Pour ce qui est de javaEE, primeFaces, c'est une grosse tartine.
    Pour mysql/oracle, java fournissant un abstraction, seules les chipottage spécifiques à l'implémentation SQL de chacun pourraient te donner du fil à retordre. Pour mongoDB, jamais utilisé.
    Bien y a plus qu'à...
    Je vais être condamné à me former en repartant de 0 par les tutos pour pouvoir faire la part des choses, car le projet utilise aussi guava et j'ai pas fini d'en découvrir visiblement.

    L'écosystème java ce n'est pas de la tarte ; la pépinière que j'avais traversée il y a plus de 15 ans c'est transformée en jungle like Jumanji

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Guava, c'est juste un paquet de helper classes. Finalement qu'on utilise guava ou ses propre classes, la complexité de lecture reste la même. Quoi que, c'est parfois plus facile à lire avec des librairies bien peaufinées

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/08/2011, 18h14
  2. Erreur : oracle.jdbc.driver.Oracledriver
    Par Rozark dans le forum JDBC
    Réponses: 3
    Dernier message: 23/01/2009, 16h54
  3. Erreur adaptateur SRDemo avec Oracle
    Par mihaestii dans le forum JDeveloper
    Réponses: 7
    Dernier message: 16/08/2007, 13h21
  4. Une erreur avec oracle
    Par Imad_ing dans le forum Oracle
    Réponses: 1
    Dernier message: 21/05/2007, 15h50
  5. PB BDE erreur 15879 avec oracle
    Par korntex5 dans le forum Oracle
    Réponses: 1
    Dernier message: 27/02/2006, 11h59

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