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

avec Java Discussion :

Exécuter/compiler en ligne de commande


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut Exécuter/compiler en ligne de commande
    Bonjour,

    J'ai une petite question concernant la compilation et l'execution en ligne de commande

    j'ai une classe java : Class1.java qui se trouve dans le dossier
    src/folder1/folder2

    Dans ma classe j'ai en première ligne :
    package folder1.folder2

    Si je me trouve dans le repertoire src, pour compiler j'utilise
    javac folder1/folder2/*.java
    J'avais cru lire que javac rechercher les classes dans le dossier courant, il devrait donc rechercher dans les sous dossiers du dossier courant ?
    Pourquoi je ne peux pas juste lancer, javac *.java

    Et pour lancer l'application (toujours depuis le répertoire src), j'utilise :
    java -cp . folder1.folder2.Class1

    Mais pourquoi pas
    java -cp folder1/folder2 folder1.folder2.Class1

    Toutes explications superflues est la bien venue, si vous pensez à des lignes de commande farfelue mais qui fonctionne pour la compilation et pour l’exécution, je suis preneur.


    Merci d'avance
    bonne soirée à tous.

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Points : 149
    Points
    149
    Par défaut
    Vu sur www.manpagez.com

    javac puts the
    class file in a subdirectory reflecting the package name, creat-
    ing directories as needed.
    Je présume que c'est ce principe là qui est utilisé lorsque que tu entres la commande java... Après j'ai parcouru ces deux docs rapidement je n'ai rien vu qui pourrait répondre à ta question mais perso je compile grâce à mon IDE donc je ne me pose pas cette question

    Les deux docs en questions : javac et java

  3. #3
    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,

    Citation Envoyé par pigpen Voir le message
    J'avais cru lire que javac rechercher les classes dans le dossier courant, il devrait donc rechercher dans les sous dossiers du dossier courant ?
    Pourquoi je ne peux pas juste lancer, javac *.java
    javac attend en paramètre un (ou plusieurs) chemin vers un fichier source, tel que définis sur le système hôte.
    Donc si tu lui passes *.java cela prendra tous les fichiers du répertoire courant mais pas de ses sous-répertoire.
    C'est le fonctionnement du shell et de tous les programmes en ligne de commande...





    Citation Envoyé par pigpen Voir le message
    Et pour lancer l'application (toujours depuis le répertoire src), j'utilise :
    java -cp . folder1.folder2.Class1

    Mais pourquoi pas
    java -cp folder1/folder2 folder1.folder2.Class1
    java attend deux choses :
    • Le classpath, qui correspond à une liste de répertoire ou d'archive ZIP/JAR
    • Le nom de la classe principale, au sens JAva du terme (c'est à dire nom.de.package.NomDeLaClasse)


    Et à l'exécution, il va rechercher cette classe dans le classpath.


    a++

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Merci de ta réponse,

    Cependant je reste avec mon interrogation sur le point suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp folder1/folder2 folder1.folder2.Class1
    pourquoi cette commande ne fonctionne pas ? Je spécifie bien qu'il doit trouver la Class1 dans folder1/folder2 ca me semble bien

    Merci d'avance

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp folder1/folder2/
    Tu dis à java que ton classpath est le dossier ./folder1/folder2/

    Il va donc chercher dans ce dossier la classe folder1.folder2.Class1 qui n'existe pas

    La bonne commande est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp folder1/folder2 Class1

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par pigpen Voir le message
    pourquoi cette commande ne fonctionne pas ? Je spécifie bien qu'il doit trouver la Class1 dans folder1/folder2 ca me semble bien
    Eh bien fais une distinction entre le répertoire de tes sources et les dossiers correspondant à tes packages. "folder1" et "folder2" sont respectivement package principal et sous-package. Le classpath lui souhaite accéder à ta liste de répertoire de fichiers sources ou de jar.

    En faisant ta commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp folder1/folder2 folder1.folder2.Class1
    C'est comme si tu souhaitais avoir la structure suivante :
    1. Un répertoire "folder1"
    2. Un sous-répertoire "folder2"
    3. A l'intérieur du sous-répertoire, le package "folder1" (qui se présente sous la forme d'un sous-dossier)
    4. Un sous-package "folder2" à ton package principal (qui se présente sous la forme d'un sous-dossier)

    @druzy :
    La commande plus juste est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp . folder1.folder2.Class1
    Ton exemple serait plus juste si l'application disposerait de "folder1" et du sous-dossier "folder2" mais sans l'indication "package folder1.folder2" au sein du fichier Class1.java.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    oui en effet je n'avais pas fait attention a ce détail de package

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Bonsoir,

    Merci à tous pour vos réactions, je commence à y voir plus clair dans cette affaire

    @Robin, effectivement je faisais mal la distinction entre dossier et package ou plutot je pensais les deux notions bien plus proches ;$

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

Discussions similaires

  1. [WebForms][CR] Compilation en ligne de commande et etat Crystal
    Par David.V dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 02/02/2009, 00h58
  2. Compilation en ligne de commande
    Par bbdanix dans le forum NetBeans
    Réponses: 1
    Dernier message: 11/06/2006, 12h35
  3. compiler en ligne de commandes avec dev-cpp
    Par yashiro dans le forum Dev-C++
    Réponses: 8
    Dernier message: 30/03/2006, 20h14
  4. [SQL-Server] exécution mssql_connect() en ligne de commande
    Par turinico dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/11/2005, 19h45
  5. Compilation par ligne de commande
    Par Dupont Lionel dans le forum MFC
    Réponses: 2
    Dernier message: 21/10/2005, 14h29

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