Partage
  • Partager sur Facebook
  • Partager sur Twitter

Could not found main class. The program will exit.

Sujet résolu
    28 février 2015 à 19:30:18

    Bonjour,

    malgré le nombre de topics sur ce sujet, je n'ai toujours pas trouvé la solution à mon problème.
    J'ai essayé de générer un .jar de mon "projet" (ne contenant qu'un fichier .java de quelques lignes) en ligne de commande, avec eclipse,  mais dans les deux cas l'erreur titrée s'affiche...


    Voici l'architecture de mon "projet" après compilation :

    - EndFileDownloadAlert
          |_ .settings
          |_ bin
          |       |_Alert.jar
          |_ classes
          |       |_alert
          |              |_Alert.class
          |_ src
          |       |_alert 
          |              |_Alert.java
          |_ MANIFEST.MF
          |_ .classpath
          |_ .project 

    Mon Manifest :

    Main-Class:  Alert (avec le retour à la ligne)

    N'utilisant pas de jar externe, je ne mets pas de Class-Path.. 

    Les commandes entrées :

    javac -sourcepath ./src -d ./classes ./src/alert/*.java 

     et ensuite :

     jar -cvfm ./bin/Alert.jar MANIFEST.MF -C ./classes alert/*.class

    J'espère ne rien avoir oublié de vous dire, merci d'avance à ceux qui tenteront de m'aider.

    Bonne soirée.

    -
    Edité par titiwinki 28 février 2015 à 23:58:21

    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2015 à 19:33:57

      Tu es sûr de ça ?

      ./src/alert/*.java

      C'est pas plutôt ./src/*.java ? Parce que vu l'arborescence que tu nous donnes il ne semble pas y avoir de dossier alert.

      Ensuite une erreur de classe principale ça peut venir du java. Il se compile quand tu le passes pas en jar ? 

      • Partager sur Facebook
      • Partager sur Twitter
        1 mars 2015 à 0:01:23

        Merci pour ta réponse rapide.

        Pour le dossier, je l'ai oublié dans le post, mais il est bien présent dans le projet. Et ensuite, quand je fais la commande:

        java -classpath ./classes alert.Alert

        depuis le dossier racine du projet, le .class se lance bien...
         

        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2015 à 10:35:10

          @Linux4Ever@~$ jar -cvfm test.jar iut/info1/manifest.mf  -C iut/bin/ ./bus/
          manifeste ajouté
          ajout : bus/(entrée = 0) (sortie = 0)(stockage : 0 %)
          ajout : bus/GestionHoraires.class(entrée = 6995) (sortie = 3927)(compression : 43 %)
          ajout : bus/HoraireDeBus.class(entrée = 3633) (sortie = 1829)(compression : 49 %)
          ajout : bus/Outils.class(entrée = 2605) (sortie = 1518)(compression : 41 %)
          ajout : bus/Horaire.class(entrée = 2325) (sortie = 1344)(compression : 42 %)
          ajout : bus/OutilFichier.class(entrée = 3355) (sortie = 1660)(compression : 50 %)
          ajout : bus/Fichiers.class(entrée = 2737) (sortie = 1541)(compression : 43 %)
          ajout : bus/Lignes.class(entrée = 4844) (sortie = 2732)(compression : 43 %)
          @Linux4Ever@~$ chmod u+x test.jar
          @Linux4Ever@~$ java -jar test.jar
          
          Application : Horaire de bus
          
          Menu :
          
          1 : Modifier les lignes et les arrêts
          2 : Consulter les les lignes, les arrêts et les horaires
          0 : Quitter
          
          Veuillez saisir votre choix : 0
          Au revoir !
          


          Après de nombreux essai j'ai réussi à générer le JAR pour mon projet sans passer par eclipse

          Donc pour toi ce serait :

          jar -cvfm ./bin/Alert.jar MANIFEST.MF -C classes/ ./alert

          Ou quelque chose de ce style

          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2015 à 11:33:35

            C'est ce que j'ai fait, et le jar se génère, le problème est qu'au lancement du jar, la classes principale n'est pas trouvée...
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2015 à 11:36:09

              Extrait le jar, et regarde comment sont organisés les fichiers. Tu dois avoir le même problème que moi, c'est à dire les .class sont à la racine, et pas dans un sous dossier, du coup la package est faux. A ce moment, teste :

              jar -cvfm ./bin/Alert.jar MANIFEST.MF -C classes/ .



              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2015 à 12:07:33

                Voici l'architecture du jar :

                _Alert.jar
                     |_alert
                     |     |_Alert.class
                     |_META-INF
                           |_MANIFEST.MF

                Et voici le manifest :

                Manifest-Version: 1.0
                Created-By: 1.8.0_25 (Oracle Corporation)
                Main-Class: Alert (suivi de deux retours à la ligne)
                



                • Partager sur Facebook
                • Partager sur Twitter
                  1 mars 2015 à 12:36:35

                  Ton main class devrait plutôt être alert.Alert si c'est organisé comme cela. Tu as mis quoi comme package sur Alert.java ? Parce que c'est ça le problème, le main de ton manifeste n'est pas en accord avec ton architecture, et ça dépend entièrement ce que tu as mis sur ton .java

                  Edit : vu que tu lances alert.Alert, mets ça dans ton manifeste :

                  Manifest-Version: 1.0
                  Created-By: 1.8.0_25 (Oracle Corporation)
                  Main-Class: alert.Alert



                  -
                  Edité par TheDEMMONx 1 mars 2015 à 12:37:38

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mars 2015 à 13:21:10

                    Merci ! :D

                    Ça fonctionne enfin, je comprends pas comment j'ai pu passer à côté...en espérant que ce post aide d'autres personnes ayant le même problème.

                    Encore merci TheDEMMONx !

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Could not found main class. The program will exit.

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown