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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 Expert

    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
    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 averti
    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
    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
    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 averti
    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
    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
    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
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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

+ 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