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

API standards et tierces Java Discussion :

Débutant souhaite utiliser un lib externe : Est-ce le bon forum ?


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bmayer
    Inscrit en
    Décembre 2003
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 153
    Par défaut Débutant souhaite utiliser un lib externe : Est-ce le bon forum ?
    Bonjour

    Développeur cobol, vbscript, php, ... bref exclusivement procédural, je me mets doucement à Java, dans le but de refaire mes outils vbscript en Java en mode console. Après avoir passé le cap du HelloWorld, je cherche à mieux utiliser le langage et son ecosystème (j'y inclus Eclipse).
    Le premier objectif est de traiter les options de la ligne de commande et pour cela, j'ai adopté la lib Apache Commons CLI en version 1.2
    Autant j'ai tatonné et réussi à l'intégrer dans Eclipse, autant je ne vois pas trop comment faire pour me générer l'outil en y incluant la lib. Je n'ai même pas réussi à utiliser la lib en ligne de commande (java <nomOutil> (.class) ...
    Suis-je sur le bon forum pour en parler, ou dois-je déplacer cette discussion dans "Général Java" ou ailleurs (où ?) ?
    Merci d'avance
    B
    Nom : Eclipse_refLibApacheCli.png
Affichages : 98
Taille : 8,7 Ko

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. Pour préciser les bibliothèques (et autres dossiers de classes), pour la commande Java, on utilise le switch -cp, qui permet de gérer le classpath :

      Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
      java -cp malib.jar;. maclasstruc

      : à la place de ; sous linux

      le . c'est pour indiquer qu'il faut aussi inclure le dossier courant, celui où se trouve la classe que tu lances (Par défaut, sans -cp, le dossier courant est inclus implicitement)

    2. Autre solution moins contraignante, faire un jar exécutable qui inclus les jars (menu export de Eclipse).
      Tu lancerais ensuite ton programme par :
      Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
      java -jar lenomdujar.jar

      Toutefois, ça peut poser un petit problème : il te faudra indiquer un nom de classe qui a une méthode main. Si tu as plusieurs classes dans ce cas, parce que tu as voulu faire plusieurs commandes, tu ne pourras pas directement. Mais tu peux t'en sortir en faisant une classe avec une méthode main qui appelle les autres et indiquer dans la ligne de commande le nom de la commande à lancer (ou même le nom de la classe).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé Avatar de bmayer
    Inscrit en
    Décembre 2003
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 153
    Par défaut Débutant souhaite utiliser un lib externe : Est-ce le bon forum ?
    Ok, pour -cp, je comprends.
    Comment fabrique t-on le .jar (hormis jar -c...)
    Plusieurs classe : aurais-tu un petit exemple sommaire avec une classe main qui appelle une ou une autre classe et leurs declarations, stp ? Je ne comprends pas trop ce que tu veux dire.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par bmayer Voir le message
    Ok, pour -cp, je comprends.
    Comment fabrique t-on le .jar (hormis jar -c...)
    Menu Export de Eclipse.
    Choix Runnable JAR File.

    Plusieurs classe : aurais-tu un petit exemple sommaire avec une classe main qui appelle une ou une autre classe et leurs declarations, stp ? Je ne comprends pas trop ce que tu veux dire.
    Mettons que tu aies par exemple, une classe CommandTruc (avec sa méthode main()) et CommandMachin (avec sa méthode main()).

    Tu peux très bien faire une classe :

    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
    public class Launch { // ou le nom que tu veux
     
         public static void main(String[] args) {
     
                String commandName = extractCommand(args); // je te laisse implémenter ça, mais en gros ça prend le premier String dans le tableau..., et ça le passe en lowerCase, pour pas s'ennuyer avec la casse
     
                String[] commandParams = extractParams(args); // pareil
     
                switch( commandName ) {
     
                      case "truc" : // par exemple
                           CommandTruc.main(commandParams);
                           break;
     
                      case "machin": 
                           CommandMachin.main(commandParams);
                           break;
     
                       default:
     
                           // là tu peux simplement afficher un message genre "Unknown command"
                           // ou faire :
     
                           try {
    			    Class<?> clazz = Class.forName(commandName);
     
    			    Method method = clazz.getMethod("main", new Class[]{String[].class});
    			    try {
    				method.invoke(null, new Object[]{commandParams});
    			} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
    				throw new RuntimeException(e);
    			}
     
    		       } catch (ClassNotFoundException | NoSuchMethodException | SecurityException e) {
    			    System.err.println("Unknown command: " + commandName);
    		       }
     
     
                }
     
         }
     
     
    }
    avec ce code, en ligne de commande tu pourras écrire

    • java -jar tonjar.jar Launch truc param1 param2...
    • java -jar tonjar.jar Launch machin param1 param2...
    • java -jar tonjar.jar Launch lenomdetaclasse param1 param2...
      avec le nomdetaclasse complète (package y compris), ou prévoir que le package est une constante concaténée avec lenomdetaclasse, ou tout ce que tu veux...
    • ...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2015, 09h09
  2. [Débutant(e)] utiliser jsk 1.4.2 et eclipse 2.1.3
    Par iadelajoie dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/01/2005, 11h38
  3. [EJB][JONAS] EJB utilisant une classe "externe"
    Par Gregory3000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/12/2004, 19h57
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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