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

Java Discussion :

[Jar]Deploiement et exécution d'un jar


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut [Jar]Deploiement et exécution d'un jar
    Salut les accros,

    je génère un jar à partir de Eclipse ( Fichier -> Exporter ) puis j'essaie de l'exécuter mais il me met
    Could not find the main class. Program will exit
    C'est ballo

    Alors j'ai téléchargé le plugin Fat Jar, mais c pas mieux, j'ai le même message

    mon OS est Windows, j'ai J2SE Runtime Environment 5.0
    mon manifest est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Manifest-Version: 1.0
    Main-Class: org.qualipharma.bph.JBPHLight
    sachant que org.qualipharma.bph est à la racine du repertoire src, tout comme manifest


    quelqu'un veux-t-il m'aider :
    please

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    heuuu...tu as écrits une méthode main ???

    Si tu executes directement un jar (ou meme juste une classe) tu dois avoir un point d'entrée pour la JVM. C'est la méthode main.

    Si tu fais pas de méthode main, c'est que ton jar ou ta classe n'est pas executable et peut être utilisé comme librairie.

    Et au passage, ca ne sert a rien de télécharger des plugins pour executer un simple jar.

  3. #3
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Il y a un moment de cela j'avais crée un fichier jar executable a partir d'une fenetre de commande.

    Je me souviens plus exactement de la commande mais je me souviens que j'avais du crée un tout petit fichier texte nommé Manifest qui contenait le point d'entrée du main.

    un petit lien que je suis allé chercher rapidement:
    http://glaforge.free.fr/weblog/index.php?itemid=20

    XXiemeciel

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    Est ce que dans ta main-class tu as une methode main ?????

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    j'ai créé un main du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void main(String[] s) {
    		new JBPHLight();
    	}
    ça ne marche pas

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    désolé j'ai pas compris ....c'est qui le boulet ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Le mieux est que tu face tout tes manipes directement depuis le prompt de la console ('DOS') window, directement avec JAR et JAVA -jar en mode verbos ... comme il est indiqué dans tout bon tutorial, il est fort probable qu'il te manque des class qui participe au bon fonctionnement de main dans ce cas main de fonctionne pas et à mon avis il te dit "... bla bla ne trouve pas main ... bla bla"
    Mon conseil à debuger sérieusement ...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    c'est vrai...avant de passer aux IDE, mieux vaut bien comprendre comment les outils marchent.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    mais c moi le boulet mon cher alheim
    tu te posais des questions ??

    je crois que je vais suivre tes conseils "sending"
    et si je reviens je serais de la loose vraisemblablement
    j'ai pas le choix

    c'est le seul moyen, parce que je ne suis pas doué question DOS

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    démarrer/executer/cmd

    Mais avant ca rajoute le repertoire bin de ton JDK dans ta variable d'environement PATH.

    Ca te permettra d'appeler les utilitaires javac et jar de n'importe ou

    Good luck !

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    ouai................ ça n'affiche plus d'erreur

    mais............... rien ne se passe

    alors que l'application est sensée instancier une new JFrame
    dans Eclipse, lorsque je fais
    Run As -> Java Application
    ça fonctionne pourtant

    ma mamia

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    apres c'est un autre probleme.
    Essaye de mettre une trace dans le main pour vérifier que tu passes bien dedans.

    Ensuite, envoies ton code, si ca se trouve il y'a un bug.

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    une trace du genre, un message dans la sortie courante ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    yep

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    alors, ce que j'ai fais
    j'ai ouvert eclipse, j'ai modifié le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void main(String[] s) {
    		System.out.println("début");
    		new JBPHLight();
    		System.out.println("fin");
    	}
    j'ai vérifié que le code marchait bien et que le texte s'affichait en sortie. Dans ce côté, tout est ok
    j'ai ensuite exporté avec
    Fichier -> Exporter -> Jar ->...
    et pour finir en beauté j'ai double-cliquer sur le jar en question
    et là .............
    RIEN
    alors j'ai décidé de repasser sous DOS, et là j'ai compris ma douleur car il y a 1 message d'erreur ...
    ce message indique qu'il manque une classe, en l'occurrence com/microsoft/jdbc/sqlserver/SQLServerDriver.
    Celle-ci est présente dans Eclipse et donc ça fonctionne tandis qu'à partir du jar, il ne la trouve pas.
    C'est peut être un pb de classpath, l'export doit omettre quelques classes.
    Je me suis dit que si je pouvais mettre les classes de sqlserver dans un dossier qui sera exporté, peut être que ça marcherait

    mais je sais pas dire à mon classpath "REGARDE DANS CE REPERTOIRE" puis exporte le

    Avez-vous une idée ?

  16. #16
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    peut etre que la JDK utilisée par eclipse n'est pas la meme version que celle installé sur ton PC et mis dans ton path.

    XXiemeciel

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    non, ce sont bien les mêmes versions

    j'ai bien regardé, toutes les classes necessaires pour se connecter au serveur SQLServer sont bien exportés dans le jar
    par contre, je remarque qu'ils sont eux-même en jar (des jar dans le jar)

    il me met toujours l'erreur
    Exception in thread "main" java.lang.NoClassDefFoundError : com/microsoft/jdbc/sqlserver/SQLServerDriver
    at....
    est-ce qu'il faut tjours que ce soit comme ça la première fois qu'on fait qqe chose en JAVA

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    as tu bien compris ce qu'est le classpath ?

    C'est une variable qui référence les répertoires dans lesquels la JVM va chercher les classes dont ton programme à besoin.

    Donc il faut que tu modifies ton classpath afin de prendre en compte tes répertoires, et que tu donnes cette variable en paramètre de la commande JAVAC.

    Dans eclipse, le classpath est construit en fonction de ce que tu mets dans projet/proprietes/buildpath. => c'est donc normal que tu n'ais pas d'erreur. En revanche, il faut renseigner javac explicitement.

  19. #19
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    oui, merci alheim, mais je crois avoir assez bien assimilé le classpath
    dans le jar exporté, il a un .classpath qui indique où sont les jar

    mais pour vérifier, j'ai aussi fait le manip
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath "C:\Program Files\Java\jre1.5.0_06\classes\msutil.jar;C:\Program Files\Java\jre1.5.0_06\classes\msbase.jar;C:\Program Files\Java\jre1.5.0_06\classes\mssqlserver.jar;." -jar BPHLight.jar
    malheureusement, cela ne change rien

    voici mon code pour faire ma connexion au SQL Server qui génère l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private Connection connection;
     
    	public ConnectionToDB() throws Exception {
    		DriverManager
    				.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
     
    		connection = DriverManager.getConnection(
    				"jdbc:microsoft:sqlserver://server:port", "uti",
    				"uti");
     
    		if (connection != null) {
    			System.out.println("Successfully connected");
    		}
    	}
    Y a-t-il qq'un qui ait déjà fait une connexion de ce type pour une application exportée en jar :
    ça m'aiderais à avancer

  20. #20
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 104
    Points : 44
    Points
    44
    Par défaut
    c bon, j'ai trouvé
    mon problème vient de cette fonction inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DriverManager
    				.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
    maintenant que je l'ai enlevé, c à moi de jouer

    en tout cas à vous deux Alheim et XXieme ciel

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

Discussions similaires

  1. .jar deploiement probleme
    Par supernicoco dans le forum NetBeans
    Réponses: 1
    Dernier message: 22/04/2009, 17h52
  2. [Jar]Deploiement et exécution d'un jar
    Par Néo-Tony dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/12/2005, 16h53
  3. [JAR][DLL][path] inclure des DLLs dans un jar
    Par blaz dans le forum Général Java
    Réponses: 5
    Dernier message: 28/07/2005, 12h29
  4. [Jar][Classpath]Pb chargement resource classpath dans un jar
    Par Pill_S dans le forum Général Java
    Réponses: 20
    Dernier message: 01/10/2004, 20h12
  5. [jar] BufferedImage issue d'un .jpeg dans un jar
    Par tit_henry dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/05/2004, 10h09

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