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 :

Configuration CLASSPATH sous Linux


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Par défaut Configuration CLASSPATH sous Linux
    Bonjour à tous,

    je souhaiterais savoir comment procéder pour définir le CLASSPATH sous Linux ?

    sous Windows , suffit...

    sous Linux, j'ai l'impression que n'est pas suffisant pour éviter une erreur lors de la compilation d'une classe utilisant une autre classe du même répertoire.

    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
    E:\workspace\CursoJavaSE\src\excepcion>javac Prueba.java
    Prueba.java:20: cannot find symbol
    symbol  : class Punto
    location: class excepcion.Prueba
                Punto a = new Punto(1,4);
                ^
    Prueba.java:20: cannot find symbol
    symbol  : class Punto
    location: class excepcion.Prueba
                Punto a = new Punto(1,4);
                              ^
    Prueba.java:22: cannot find symbol
    symbol  : class Punto
    location: class excepcion.Prueba
                a = new Punto(-2, 4);
                        ^
    Prueba.java:24: cannot find symbol
    symbol  : class ErrConst
    location: class excepcion.Prueba
            } catch (ErrConst e) {
                     ^
    4 errors
    Merci d'avance

  2. #2
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Salut,
    A priori si tes classes sont dans le meme repertoire tu n'as pas besoin de specifier le classpath car il me semble que par defaut java cherche dans le classpath et s'il trouve pas la classe cherchee il l'a cherche dans le repertoire courant

    Sinon tu peux essayer ca
    java -cp . laClasseContenantLeMain
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export CLASSPATH=.:$CLASSPATH

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Si les classes sont dans le meme repertoire alors normalement pas besoin de classpath. Par contre si tes classes sont dans le meme répertoire mais pas dans le meme package il ne faut pas oublier les imports!

    Et quand tu set le classpath ne met jamais que le '.' , a la limite rajoute le '.' au classpath précédent mais juste '.' tu risques d'avoir des petits problemes de temps en temps....

  4. #4
    Membre éclairé Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Par défaut Pb de classpath
    Salut et merci pour vos réponses mais j'ai toujours le même problème.
    Mes classes se situent dans le même répertoire et même package.

    Voici le code de classe contenant le main :

    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
     
    package excepcion;
     
    /**
     *
     * @author 
     */
    public class Prueba {
     
        public static void main(String[] argv) {
            try {
                Punto a = new Punto(1,4);
                a.visualizar();
                a = new Punto(-2, 4);
                a.desplazar(4,5);
            } catch (ErrConst e) {
                System.out.println("Error Construccion");
                System.out.println(e.getMessage());
                e.printStackTrace();
                System.exit(-1);
            }
        }
    }
    et le code d'une classe appelée :

    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
    /*
     * Punto.java
     *
     * Created on 28 de febrero de 2007, 07:23 PM
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package excepcion;
     
    /**
     *
     * @author
     */
     
     
    public class Punto {
        // Declaración de los atributos
        int x;
        int y;
        // Otros métodos y constructores
     
        public Punto(int x, int y) throws ErrConst {
            if ((x < 0) || (y < 0)) throw new ErrConst(x,y);
            this.x = x ; this.y = y;
        }
        public void desplazar(int dx, int dy) throws ErrDepl {
             if (((x+dx) < 0) || ((y+dy) <0)) throw new ErrDepl();
                  x += dx ; y +=dy;
             }
     
        public void transformar() throws ErrDepl{
            this.desplazar(x,y);
        }
        public void visualizar() {
            System.out.println("Datos : " + x + " " + y);
        }
    }
    Le classpath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [habasque@localhost excepcion]$ echo $CLASSPATH
    .:.
    J'ai également essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     java -cp . laClasseContenantLeMain
    mais sans succès !

    Donc voilà si vous avez une idée lumineuse, je suis preneur....

    Merci d'avance

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux supprimer la variable d'environnement CLASSPATH (par défaut c'est le répertoire courant qui sera utilisé).

    Ton problème vient du fait que java attend un nom de classe complet, c'est à dire avec le package.

    Tu dois donc exécuter la commande suivante :
    Le tout depuis le répertoire de base de ton code (c'est à dire le répertoire qui contient le sous-répertoire "excepcion" qui contient les fichiers *.class)


    Plus d'info : Qu'est-ce que le CLASSPATH ?

    a++

  6. #6
    Membre éclairé Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Par défaut Compilation sous Linux
    Merci.
    Effectivement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac excepcion/Prueba.java
    fonctionne (c'est-à-dire qu'il retrouve les classes appelées) mais je ne comprends pas pourquoi le fonctionnement diffère de celui sous DOS.

    En effet, sous DOS, pas besoin de remonter dans le répertoire parent. Il suffit de définir un classpath=. et de lancer , ca tourne.

    J'aurais aimé éclaircir la différence entre la compilation sous Linux et Windows...

Discussions similaires

  1. [Configuration] PHP sous linux
    Par jilham dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 20/04/2007, 10h00
  2. configurer apache2 sous linux
    Par maximenet dans le forum Apache
    Réponses: 3
    Dernier message: 15/10/2006, 18h36
  3. J2SE - $CLASSPATH sous Linux
    Par nmqm dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 21/02/2006, 08h34
  4. Configuration Wifi sous Linux
    Par G3G3 dans le forum Réseau
    Réponses: 11
    Dernier message: 05/03/2005, 16h41
  5. [Linux]CLASSPATH sous Linux
    Par Abdelkaoui dans le forum Général Java
    Réponses: 8
    Dernier message: 20/09/2004, 11h36

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