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 :

Création d'une petite appli se connectant avec MySQL


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Création d'une petite appli se connectant avec MySQL
    Bonjour,

    Je débute en Java et pour cela je développe (sous windows 7 / Eclipse Kepler) une petite application qui se connecte à une base MySQL. Pour cela - et me basant sur le livre que j'ai acheté - j'utilise le driver qui est sous la forme d'un .jar (que j'ai donc intégré dans mon Ecplise).

    Le résultat est concluant mais je pensais que le driver pour MySQL était inclus si je réalise une exportation d'un .jar exécutable. Ce qui est d'ailleurs le cas sur mon PC.

    Pour pousser un peu plus loin, j'essaye d'exécuter ce .jar sur un Mac histoire de m'assurer qu'effectivement du Java compilé se fout de l'environnement.

    Et là c'est le drame. Je me retrouve avec une exception du type java.lang.ClassNotFoundException. Bien entendu, je ne sais pas comment avoir plus d'infos sur l'erreur (quitte à modifier mon code, cela ne me gène pas). J'ai dans l'idée qu'en fait le driver n'est pas "totalement" inclus dans le .jar mais comment savoir où est le souci ? D'ailleurs esce que ce que je veux faire est possible ? (Réaliser une appli qui se connecte à une base MySQL qui puisse tourner sous Mac et PC sans avoir ni à installer quoique ce soit ni à le recompiler).

    Pour info, la base est sur une 3e machine donc le souci ne vient pas de la connexion à la base.

    Merci de vos pistes voire de vos réponses

    Sébastien

  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
    Citation Envoyé par SebV Voir le message
    Et là c'est le drame. Je me retrouve avec une exception du type java.lang.ClassNotFoundException.
    peut-on avoir le message d'erreur complet ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Biensur, voici le texte complet de l'erreur sur mon mac:

    Exception in thread "main" java.lang.NoClassDefFoundError: test7/jar
    Caused by: java.lang.ClassNotFoundException: test7.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par SebV Voir le message
    Biensur, voici le texte complet de l'erreur sur mon mac:

    Exception in thread "main" java.lang.NoClassDefFoundError: test7/jar
    Caused by: java.lang.ClassNotFoundException: test7.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    avant d'exporter ton appli as tu essayés de la lancer via eclipse ???
    car cette erreur n'est pas normal. "test7.jar" n'est pas une classe donc tu dois avoir un problème dans ton code !
    Il serait bien que tu nous montre du code !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Et bien sous Eclipse ça fonctionne nickel.

    Pour vous montrer le code, voici la classe qui contient le lanceur dans son intégralité ainsi que suivi le

    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
     
    package mainFrame;
     
    import java.awt.EventQueue;
     
    import javax.swing.JDialog;
    import javax.swing.JOptionPane;
     
    import connexion.DialogConnexion;
    import database.Database;
    import serialData.SerialDataHandler;
     
    public class MainApplication {
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					/* Initialisation de la sérialisation */
    					SerialDataHandler.getSingleton();
    					/*Initialisation du gestionnaire de la base */
    					Database db = Database.getInstance();
    					/* Création de la fenêtre */
    					DialogConnexion dialog = new DialogConnexion();
    					dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    					dialog.setVisible(true);
    					if (dialog.getState()) {
    						/* Lancement de la connexion */
    						String sUser = dialog.getUser();
    						String sPassword = dialog.getPassword();
    						dialog.dispose();
    						db.connectDatabase(sUser, sPassword);
    						if (!db.isConnected()) {
    							JOptionPane.showMessageDialog(null, "Impossible to connect to your database", "Database error", JOptionPane.ERROR_MESSAGE);
    							dialog.dispose();
    							System.exit(0);
    						}
    						else {
    							dialog.updateData();
    							dialog.dispose();
    							MainFrame mainFrame = new MainFrame();
    							mainFrame.setVisible(true);
    						}
    					}
    					else {
    						/* Fin de l'application */
    						dialog.dispose();
    						System.exit(0);
    					}
    				} catch (Exception e) {
    					e.printStackTrace();
    					System.err.println("Erreur: " + e);
    				}
    			}
    		});
    	}
     
    }
    Et le code qui cré mon singleton d'accès à ma base:
    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
     
    	private Database() {
    		/* Initialisation du driver */
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			// Class.forName("org.gjt.mm.mysql.Driver");
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "Database driver class not found", "Fatal error", JOptionPane.ERROR_MESSAGE);
    			System.exit(1);
    		}
    		/* Initialisation du singleton à vide */
    		this.dbConnection = null;
    		this.isDBConnected = false;
    	}

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Peux tu aussi donner la ligne de commande que tu exécute sur le mac ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Ah et bien tout simplement "java test7.jar", l'erreur vient de cela ?

  8. #8
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par SebV Voir le message
    Ah et bien tout simplement "java test7.jar", l'erreur vient de cela ?
    bien sur que le problème est là !

    Pour lancer l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ./test7.jar mainFrame.MainApplication
    dans le classpath tu devras aussi ajouter le jar de la base de données !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    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 SebV Voir le message
    Biensur, voici le texte complet de l'erreur sur mon mac:

    Exception in thread "main" java.lang.NoClassDefFoundError: test7/jar
    Toi, t'as tappé java test7.jar au lieu de java -jar test7.jar pour exécuter ton jar

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,

    Un "simple" java -jar test7.jar fonctionne (enfin sauf que sur Mac il faut compiler en Java 1.6)

    Merci de votre aide.

    Sébastien

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

Discussions similaires

  1. Besoin de d'aide pour démarrer une petite appli avec géoloc
    Par Kaoutchou dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 26/07/2014, 01h08
  2. ?Faire une petite appli/ C en API windows
    Par booraq dans le forum Windows
    Réponses: 2
    Dernier message: 09/12/2006, 11h04
  3. Question sur le développement d'une petite appli
    Par link182 dans le forum Général Java
    Réponses: 4
    Dernier message: 29/08/2006, 16h24
  4. Réponses: 3
    Dernier message: 05/06/2006, 15h45
  5. Réponses: 2
    Dernier message: 23/03/2004, 12h23

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