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

Maven Java Discussion :

[MAVEN][DEBUTANT] Utilisation d'une classe exterieur au projet.


Sujet :

Maven Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut [MAVEN][DEBUTANT] Utilisation d'une classe exterieur au projet.
    Bonjour,
    Afin d'utiliser l'outil Maven, j'essaye de refaire le tutoriel suivant:
    http://dcabasson.developpez.com/arti...uction-maven2/

    J'ai donc mit en place le plugin « m2eclipse », et j'ai lancer un « mvn install » sur les sources. Et miracle ça marche (normal j'ai rien touché jusqu'ici).

    Le projet définit des classes dans un projet A et les utilises dans un projet B qui se déploie en .WAR.

    Moi je veux faire pareil sauf que j'aimerais faire un jar executable.

    * Donc j'ai le projet « MavenProject2 » qui va posséder la classe « Uneclass » dans le package « unpackage ».

    Voici le code de la "class:"
    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
     
    package unpackage;
     
    public class Uneclass {
    	private int entier=0;
    	private int entier2=2;
     
    	public Uneclass(){
     
    	}
     
    	public int calculer(){
    		return entier+entier2;
    	}
    	public int getEntier() {
    		return entier;
    	}
    	public void setEntier(int entier) {
    		this.entier = entier;
    	}
    	public int getEntier2() {
    		return entier2;
    	}
    	public void setEntier2(int entier2) {
    		this.entier2 = entier2;
    	}
     
    }
    Voici le code du POM correspondant:
    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
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.javaworld.ima</groupId>
      <artifactId>MavenProject2</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name> un maven projet</name>
     
      <!--  Dependances -->
     
      <!-- Declaration de mon build -->
      <build>
        <finalName>MavenProject2</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
             </plugin>         
         </plugins>    
      </build>
     
     
     
    </project>

    Donc ma class principal « MavenProject » avec la classe main « LanceurDeTest » dans le package « mainPack1 »:
    package mainPack1;
    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
     
    import unpackage.Uneclass;
     
    public class LanceurDeTest {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("helloWorld");
    		Uneclass tes=new Uneclass();
    		System.out.println("valeur du calcul: '"+tes.calculer()+"'");
    	}
     
    }
    Avec son Pom
    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
    +
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.javaworld.ima</groupId>
      <artifactId>MavenProject</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name> un maven projet</name>
     
     
      <!--  Dependances -->
      <dependencies>
    	  <dependency>
     
    	      <groupId>com.javaworld.ima</groupId>
    	      <artifactId>MavenProject2</artifactId>
    	      <version>1.0-SNAPSHOT</version>
     
    	   </dependency>
      </dependencies>
     
      <!-- Declaration de Mon build -->
      <build>
      	<finalName>MavenProject</finalName>
    	<plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
     
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <mainClass>mainPack1.LanceurDeTest</mainClass>
                </manifest>
              </archive>
            </configuration>
     
          </plugin>
        </plugins>
     
        </build>
     
     
    </project>
    Donc après ca je fais un : « mvn install » dans chacun des répertoires.
    J'ai 2 superbe « BUID SUCCESSFUL»

    Et après un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -jar target/MavenProject.jar
    dans le shell.

    j'obtiens ce résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    helloWorld
     
    Exception in thread "main" java.lang.NoClassDefFoundError: unpackage/Uneclass
     
            at mainPack1.LanceurDeTest.main(LanceurDeTest.java:13)
    voilà mon problème. Qu'est ce qui ne va pas dans mes pom.xml pour qu'il ne fasse pas le liens avec ma classe « Uneclass ».

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Vérifie que dans ton jar tu as bien l'autre jar dans lequel est ta classe UneClass.
    Si c'est pas le cas c'est que tu utilise pas le bon plugin ou que tu as oublié une option.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    En effet je n'ai pas de classe "Uneclass" dans mon "MavenProject.jar"
    Pourtant dans le manifest j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Manifest-Version: 1.0
     
    Archiver-Version: Plexus Archiver
     
    Created-By: Apache Maven
     
    Built-By: bizance
     
    Build-Jdk: 1.6.0_03
     
    Main-Class: mainPack1.LanceurDeTest
     
    Class-Path: MavenProject2-1.0-SNAPSHOT.jar
    Je me dit qu'iIl sait qu'il faut mettre le "MavenProject2-1.0-SNAPSHOT.jar" dans le "MavenProject.jar".
    Je continue de chercher alors.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Dans ce cas là rassembles les deux jar dans le meme repertoire pour lancer ton test.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Même erreur, ça ne change rien.
    Est ce que c'est possible que j'ai fait un mauvais référencement dans éclipse?

    J'essaye de trouver les différences entre le tutoriel et mon projet, mais je vois pas l'élément que j'ai pu oublier.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Points : 1 524
    Points
    1 524
    Par défaut
    Comme toutes applications java, il faut mettre les jars dans le classpath:
    java -classpath MavenProject2-1.0-SNAPSHOT.jar -jar target/MavenProject.jar

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Je suis d'accord mais Maven ne peut il le faire?

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Points : 1 524
    Points
    1 524
    Par défaut
    faire quoi???
    la ligne de commande "java ..." n'utilise pas maven.

    Soit tu veux lancer ton appli à partir de maven et dans ce cas, tu peux utiliser le plugin maven-exec-plugin, soit tu veux lancer ton appli indépendement de maven et il faut que tu distribues toutes les classes nécessaire.
    Pour se faire, il faut créer un uber jar contenant l'ensemble des classes, ce qui n'est pas très propre, ou créer un assembly de type zip ou tar.gz que tu utiliseras pour installer ton appli, comme toute appli.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Donc j'ai essayé ta commande et ca ne marche pas. (Bien sur j'ai mis les MavenProject2.jar, MavenProject.jar cote à cote). J'ai toujours la même erreur.

    En faite je suis en cours de développement. Je vais modifier le .jar fréquemment. Donc je pensais que Maven me donnais un jar exécutable tout-en-un (enfin avec les liens fait correctement dans le manifeste).

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Points : 1 524
    Points
    1 524
    Par défaut
    Ce n'est pas normal. Toutes classes présentes dans un des jar du classpath devrait être trouvé. En tout cas, le problème est indépendant de maven.

    Concernant l'exécution à partir de maven, regarde ce plugin: http://mojo.codehaus.org/exec-maven-plugin/usage.html

Discussions similaires

  1. ou mettre une structure utilisée par une classe
    Par grand's dans le forum C++
    Réponses: 10
    Dernier message: 28/07/2005, 18h53
  2. Réponses: 8
    Dernier message: 22/12/2004, 22h57
  3. [Debutant(e)]Compiler une classe
    Par tscoops dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/05/2004, 13h50
  4. Réponses: 2
    Dernier message: 18/05/2004, 14h12
  5. [Debutant(e)]importer une classe
    Par ber_jp dans le forum Eclipse Java
    Réponses: 18
    Dernier message: 12/05/2004, 17h39

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