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

Langage Java Discussion :

Maudite class main ds un jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut Maudite class main ds un jar
    Bonjour,
    Ca fait maintenant qqes jours que je fouille les forums et l'utilisation du jar ne devrait plus avoir de secret pour moi sauf que ...

    j'ai cree une p'tite appli qui marche tres bien et qui se lance depuis un .bat avec la console dos qui se ferme avant le debut de mon prog.
    jusque la tout va bien, mais pour l'envoyer par mail c pas pratique ^^ d'ou mon idee d'en faire un jar.

    j'arrive a creer le fichier mais bien entendu, a l'execution ma jre ne trouve pas ma classe main... et la ca fait 4 jours que je teste, je cherche et rien.

    Donc voici l'arborescence de mon bordel organise :
    [TextMaker] ( repertoire principal)
    |______[bin]
    |______[images]
    |______ launch.bat(mon fichier qui lance, d'habitude)

    tout est simple sauf que :

    1 : je travaille sur de la lecture et ecriture de fichiers textes avec donc des chemins relatifs ( type System.getProperty("user.dir") + "\\bin\\monfichier.txt" ), je ne peux donc pas supprimer ou modifier mon arborescence comme ca ( j'ai une bonne tripotee de fichier maintenant piske mon appli en .class fait ds les 8M ).
    De plus mon appli est donc calculée pour etre executée depuis le repertoire [TextMaker] ou se situe le launch.bat, le jar comprendra t'il cela ?

    2 : mon prog contient 2 mainclass en fait car le premier prog lance la jre pour executer ma vraie main depuis Runtime.getRuntime().exec(strCmdDos);afin d'eviter la console dos allumée. 2 mains ds une archive causeraient'ils un conflit ?

    3 : mon repertoire META-INF se retrouve a la racine donc a cote de mon rep [TextMaker]

    mon fichier manifest.mf lui ne contient que 2 lignes :
    Manifest-Version: 1.0
    Main-Class: Launch

    et là, c'est le drame !!!
    a l'execution pas de main class.
    j'ai essaye de remplacer ma ligne "Main-Class: Launch" par
    Main-Class: TextMaker/bin/Launch"
    Main-Class: bin/Launch
    Main-Class: TextMaker.bin.Launch
    Main-Class: bin.Launch
    j'ai meme essaye avec les \ , rien n'y fait.
    j'ai essaye sans le fichier Launch, en prenant directement ma vraie main classe, mais le resultat est le meme.
    J'ai bien verifie la presence de ces fichiers dans mon archive, et c'est le cas , ils sont bien la.

    Faut t'il que je fasse un pseudo "package" pour mon repertoire bin pour que ca marche ?

    Je crois avoir fait le tour de mes question, et j'espere avoir ete assez concis pour que l'on puisse m'aider.

    D'avance merci, deja pour m'avoir lu

    Maddictivement.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Tes packages doivent se trouver à la racine du jar.

    Par exemple, tu as le package fr.monsite.monapplication et dedans tu as la classe Main qui est le lanceur, à la racine du jar doit se trouver le répertoire fr qui contient le répertoire monsite qui contient le répertorie monapplication qui contient Main.class.

    Ensuite, tu dois simplement renseigner la classe fr.monsite.monapplication.Main dans le Manifest.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il n'y a pourtant rien de sorcier... ton fichier manifest doit ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Manifest-Version: 1.0
    Main-Class: com.clemessy.patch.GenerateR5CollaborateurIdentifiant
    Le nom de la classe main doit être au format "java" : package.Classe

    A+

    PS : petite précision si tu utilises eclipse, la fonction export -> jar fait ça très bien
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut
    mm donc si comprends bien, pour cet exemple, je dois juste mettre un package dans chacune de mes classes de l'appli :

    package TextMaker.bin.Launch; et ca va se lancer
    oki ! bah merci bcp, effectivement c'est une tempete dans un verre d'eau, si ca suffit.

    encore merci de m'avoir lu

    Cdt.
    Mad

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut
    bon, avant tout merci :p ca marche...
    j'ai bien reussi a lancer ma classe main de mon jar, qui est donc devenu presque executable...
    sauf que bien sur mon appli travaille sur qqes fichiers texte (historisation , et reglages utilisateurs) du coup ... a moins de travailler dans "user.home" je n'ai pas la possibilite d'avoir mes fichiers texte dans le repertoire de travail.

    Hum, alors j'ai pense a faire de mon jar un auto extractible... et la c'est le drame
    je n'arrive a le faire que depuis MON poste ou le sdk est installe...
    alors, maintenant que j'ai l'air fin, qq'un pourrait t'il m'aiguiller la paske j'ai peur de m'attaquer a un cheval de bataille trop gros pour moi mdr .

    p'tet que faire remonter les classes necessaires a la commande jar pourraient en effet solutionner cela .. mais j'ai des doutes.

    Maddictivement.

Discussions similaires

  1. Fichier .jar n'identifie pas la class-main
    Par mjlaurent dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 16/06/2013, 15h26
  2. Réponses: 1
    Dernier message: 09/05/2011, 11h08
  3. Réponses: 4
    Dernier message: 16/04/2009, 01h43
  4. [JAR]Création de Jar -> trouve pas la classe main
    Par Zapan dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/01/2006, 11h17
  5. [ERREUR] Ne retrouve pas la classe main
    Par Anathema dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 06/07/2005, 16h16

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