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

Eclipse Java Discussion :

[Eclipse 3.2.1] Changer Classpath dans le code


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut [Eclipse 3.2.1] Changer Classpath dans le code
    Bonjour,
    J'utilise Eclipse et je n'ai aucun problème quand il faut ajouter un jar, .. dans le classpath. Mais j'aimerai le faire dynamiquement dans le code. En fait j'ai un projet dans lequel je génère un fichier java, puis je compile dans le souci de l'utiliser (Class c = Class.forName(MaClasse))
    - je crée mon fichier java sans problème
    - je compile avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
    // chemin = chemin d'accès à ma classe générée
    Process proc = Runtime.getRuntime().exec("javac -cp \""+System.getProperty("java.class.path")+"\" "+chemin+"\\MaClasse.java");
    }
    catch(IOException ex) {
    System.out.println("Imposible d'executer la commande"); 
    }
    Après compilation, le .class est bien généré et il me faut donc mettre le chemin "chemin" dans le classpath avant d'utiliser ma classe. Je le fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String cp = System.getProperty("java.class.path");
    System.setProperty("java.class.path", cp+";"+chemin);
    String cp2 = System.getProperty("java.class.path");
    System.out.println("Claspath final = "+cp2);
    Mon classpath final s'affiche bien incluant le nouveau chemin, mais quand je fais un forName() sur cette classe générée, l'exception suivante survient :
    Exception in thread "main" java.lang.ClassNotFoundException: BridgeServerImpl
    at java.net.URLClassLoader$1.run(Unknown Source)
    Pourtant, quand j'ajoute ce chemin au classpath explicitement dans eclipse, cela fonctionne bien.
    je ne sais ce qui se passe.
    Merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    1) Ton Runtime.exec(String) n'est pas propre... lorsqu'on veut lancer une commande possédant des arguments, il vaut mieux passer par Runtime.exec(String[]).

    2) Tu ne peux pas modifier ton classpath dynamiquement aussi simplement que ça. Pour charger dynamiquement ta classe, tu as besoin de passer par la classe "ClassLoader" > regarde la javadoc pour comprendre comment l'utiliser
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    2) Tu ne peux pas modifier ton classpath dynamiquement aussi simplement que ça. Pour charger dynamiquement ta classe, tu as besoin de passer par la classe "ClassLoader" > regarde la javadoc pour comprendre comment l'utiliser
    Peux-tu m'orienter avec quelques lignes de code à exploiter, je ne vois pas bien comment utiliser cette classe ClassLoader

    Merci

Discussions similaires

  1. ClassPath dans un projet Eclipse
    Par Lolitaaa dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 14/12/2009, 13h50
  2. Réponses: 1
    Dernier message: 17/03/2009, 18h00
  3. Réponses: 19
    Dernier message: 04/10/2006, 17h53
  4. Les classpath dans eclipse
    Par ludoF dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 11/07/2006, 18h23
  5. [Jar][Classpath]Pb chargement resource classpath dans un jar
    Par Pill_S dans le forum Général Java
    Réponses: 20
    Dernier message: 01/10/2004, 21h12

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