Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compilation sous Eclipse qui fait des siennes

    17 janvier 2018 à 19:32:35

    Hello

    J'ai un problème avec la création d’exécutables ... Ça marche pas ...

    En fait, j'ai un projet assez gros que j'essaye de compiler, mais il refuse. J'ai donc tester avec un simple helloWorld pour voir s'il y avais un problème particulier.

    public class Main {
    	public static void main(String[] args) {
    		System.out.println("Hello World");
    	}
    }
    


    J'ai tester Export > JAR File  et Runnable JAR File

    Bien que la compilation semble se faire correctement, l'application ne se lance pas en console et j'ai un splendide 

    Erreur : impossible de trouver ou de charger la classe principale hw.jar
    Causé par : java.lang.ClassNotFoundException: hw.jar


    Pourtant, j'ai bien spécifié le Main, et laissé les paramètres par défaut

    Si qlq'un à une idée, je suis preneur



    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      17 janvier 2018 à 20:40:38

      J'ai un problème avec la création d’exécutables ... Ça marche pas ...
      
      En fait, j'ai un projet assez gros que j'essaye de compiler, mais il refuse. J'ai donc tester avec un simple helloWorld pour voir s'il y avais un problème particulier.
      

      "Ça marche pas" n'est pas une erreur

      "Il refuse", ce n'est pas qu'il refuse, c'est que tu l'as mal configuré.

      Le message d'erreur est simple: il cherche une classe hw.jar là où il devrait chercher une classe .class (ou .java, doute).

      Qu'as-tu dans ton MANIFEST ?

      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2018 à 22:22:27

        Tient, un message que j'avais posté n'est pas passé.

        Merci Artemix, mais après une heure de tests, j'ai enfin réussi la compil. j'ai pu donc passer à mon projet MAVEN. Il contient une lib externe, Log4j

        La compilation c'est bien passé, mais maintenant, il ne trouve pas la lib

        >java -jar mastermind.jar
        Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
                at com.Mastermind.core.Config.<clinit>(Config.java:21)
                at com.Mastermind.core.Core.<clinit>(Core.java:13)
                at com.Mastermind.model.Model.<init>(Model.java:21)
                at com.Mastermind.App.main(App.java:14)
        Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
                at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
                at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
                at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
                ... 4 more

        J'avoue que là, je seche ...

        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2018 à 7:05:16

          Bonjour,

          Tu dis que tu passes à ton projet Maven, mais là tu lances une exécution "à la main". Or maven est un outil de build et pas d'exécution, donc une fois compilé avec Maven, il faut que tu fournisses les dépendances à ton exécution, avec l'option -cp dans laquelle tu ajouteras ta librairie Log4J

          L'autre solution est de 'demander' à Maven de te créer un jar embarquant toutes les dépendances d'exécution que tu pourras alors avec ta commande ci-dessus.

          Pour cela il te faut faire appel au maven-assembly plugin

          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>fully.qualified.MainClass</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id> 
                <phase>package</phase> 
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          En remplaçant fully.qualified.MainClass par le nom / package de ta classe contenant la méthode main

          • Partager sur Facebook
          • Partager sur Twitter

          Compilation sous Eclipse qui fait des siennes

          × 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