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 :

Compilation ligne de commandes avec des jars


Sujet :

Java

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Compilation ligne de commandes avec des jars
    Bonjour,

    exceptionnellement, j'ai besoin de compiler mon programme en ligne de commandes et non avec Eclipse.

    Voici mon petit programme :
    Code java : 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
     
    import filesAndFolders.fichiersTabules.FichierTabule;
    import rdf.classifiers.SystematicResearch;
    import rdf.classifiers.regressions.LogisticRegression;
    import softwares.ramis.AutomaticModel;
     
     
    public class Cluster
    {
     
     
    public static void main(String[] args) throws Exception
    	{
    	LogisticRegression classifier = new LogisticRegression() ;
    	FichierTabule ann = new FichierTabule("MonFichier.txt", true) ;
    	AutomaticModel automod = new AutomaticModel() ;
    	}
     
    }
    Tout ce qu'il y a de plus simple et j'ai à coté deux fichiers jar contenant les classes appelées par les imports.

    Je compile avec la ligne suivante (je lie mes deux jars et je donne le nom de la classe à compiler) :
    javac -classpath ../firetiti.jar -classpath ../../../CreationJar/lib/weka.jar Cluster.java
    Mais à la compilation, j'ai des erreurs qui me disent que javac ne parvient pas à trouver les classes à importer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cluster.java:1: package filesAndFolders.fichiersTabules does not exist
    import filesAndFolders.fichiersTabules.FichierTabule;
    J'ai vérifié en décompressant mes jars et tout est dedans. J'ai même refait le programme sous Eclipse en mettant mon morceau de code et en liant les deux jars, tout fonctionne bien.

    Est ce que quelqu'un aurait une idée ?
    Merci par avance...

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -classpath ../firetiti.jar:../../../CreationJar/lib/weka.jar Cluster.java
    ne marche pas? (sous UNIX: remplacer les deux points par un point virgule sous WIN*)
    (je ne savais pas qu'on pouvait mettre plusieurs options -classpath: t'es sur de ton coup?)

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    bien vu, ça marche.
    Je suis sous Mac OS X, donc c'est aussi des ':'.

    Est ce que tu aurais une idée de la ligne de commande pour ensuite lancer l'application ?
    J'ai essayé la ligne suivante, mais sans succès :
    java -classpath ../firetiti.jar:../../../CreationJar/lib/weka.jar Cluster
    (c'est là que je me rends compte à quel point Eclipse est génial :s)

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    t'es sur que c'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath ../firetiti.jar:../../../CreationJar/lib/weka.jar com.maboite.monpackage.Cluster
    (ne pas oublier le nom canonique de la classe)

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    C'est juste une simple classe Java qui n'est dans aucun package.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le classpath doit également contenir le répertoire de base contenant tes fichiers *.class (dont "." en l'occurrence)

    a++

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Le classpath doit également contenir le répertoire de base contenant tes fichiers *.class (dont "." en l'occurrence)
    Euh... excuse moi... mais est ce que tu pourrais un peu plus préciser ?

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Oups... n'importe quoi. J'ai mal lu la question

  9. #9
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    la classe à éxécuter est en dehors du jar. En revanche, elle appelle certaines de ses fonctions. C'est exactement la classe qui est en haut que je souhaite lancer.

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    la classe à éxécuter est en dehors du jar. En revanche, elle appelle certaines de ses fonctions. C'est exactement la classe qui est en haut que je souhaite lancer.
    Comme dit adiGuba, ton classpath doit absolument contenir le répertoire racine qui contient le code compilé (=les *.class)

    Si tu executes ta commande "java ..." directement depuis le repertoire qui contient les *.class, il faut quand meme ajouter "." au classpath

    Si tu executes ta commande "java ..." depuis la racine d'un projet eclipse, il faudrait ajouter "bin" au classpath (car eclipse met les .class dans un repertoire "bin")

  11. #11
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Euh... peux tu me donner un exemple, car là j'avoue que je ne comprends pas.

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Euh... peux tu me donner un exemple, car là j'avoue que je ne comprends pas.
    Mais certainement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MKDIR Hello
    CD Hello
    Echo class Hello { public static void main(String[] args) { System.out.println("Hello"); } } > Hello.java
    
    javac Hello.java
    
    java  -classpath .;somefolderpath;somejarfilename  Hello
    et sa variante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    
    MKDIR bin
    javac  -d bin  Hello.java
    
    java  -classpath bin;somefolderpath;somejarfilename  Hello

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Dans ton cas ca donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ../firetiti.jar:../../../CreationJar/lib/weka.jar:. Cluster
    A condition d'exécuter cela depuis le répertoire contenant le fichier Cluster.class, sinon il faut mettre le chemin vers ce répertoire.


    a++

  14. #14
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    merci, tout ça marche !!! Je vais pouvoir utiliser le cluster à fond et le faire transpirer.

    Petite précision, le code qui compile est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath .:./firetiti.jar:../../../CreationJar/lib/weka.jar:. Cluster
    ou vu que maintenant j'ai tout mis dans le même répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath .:firetiti.jar:weka.jar:. Cluster

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu n'as pas besoin de mettre deux fois le répertoire courant

    a++

  16. #16
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Tu n'as pas besoin de mettre deux fois le répertoire courant
    Ben j'ai essayé sans et j'ai eu un souci :-(

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/05/2012, 18h31
  2. Compilation Ligne de commande avec CSharp
    Par yaa3djaa dans le forum C#
    Réponses: 0
    Dernier message: 17/02/2010, 12h20
  3. Exécuter script en ligne de commande avec des paramètres
    Par illegalsene dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2009, 14h21
  4. Réponses: 2
    Dernier message: 21/05/2006, 09h30
  5. compiler en ligne de commandes avec dev-cpp
    Par yashiro dans le forum Dev-C++
    Réponses: 8
    Dernier message: 30/03/2006, 19h14

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