JAVA Pb ClassLoader avec un chemin
Résolu/Fermé
ortys4
Messages postés
254
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010
-
21 févr. 2008 à 14:44
step7 - 1 mai 2009 à 00:43
step7 - 1 mai 2009 à 00:43
A voir également:
- JAVA Pb ClassLoader avec un chemin
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Waptrick jeux pes 2016 java - Forum logiciel systeme
6 réponses
ortys4
Messages postés
254
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010
51
21 févr. 2008 à 15:46
21 févr. 2008 à 15:46
Bah c'est ok, en fait il chercher Courreur.class.class !!!
Donc petite rectification de ma par et ca marche.
Vraiment grand merci de votre part.
Donc petite rectification de ma par et ca marche.
Vraiment grand merci de votre part.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
21 févr. 2008 à 15:26
21 févr. 2008 à 15:26
Bonjour,
En java quand tu fais : getResourceAsStream(...)
Automatiquement la jvm va chercher la ressource dans la liste des ressources de ton projet/programme.
Conclusion pour qu'une classe java soient "visible", c'est à dire que tu puisse l'appeler par son nom sans son chemin d'accès, il faut au préalable que ce chemin d'accès soit référencé dans le CLASSPATH de ton programme.
Sans ça, par défaut la jvm va essayer de trouver le classe java à la racine de ton application.
Conclusion, de la même manière qu'éclipse permet l'édition des propriétés d'un projet dans lesquelles apparait le CLASSPATH du projet, il faut que tu gère un CLASSPATH pour tes projets (dans ton futur ide), ou au moins pour le début, intégrer la notion de CLASSPATH (liste de répertoire dans lesquels essayer de trouver la classe java que tu veux loader.
Voilà, j'espère que ces explications t'aideront dans l'avancement de ton projet.
Bon courage
En java quand tu fais : getResourceAsStream(...)
Automatiquement la jvm va chercher la ressource dans la liste des ressources de ton projet/programme.
Conclusion pour qu'une classe java soient "visible", c'est à dire que tu puisse l'appeler par son nom sans son chemin d'accès, il faut au préalable que ce chemin d'accès soit référencé dans le CLASSPATH de ton programme.
Sans ça, par défaut la jvm va essayer de trouver le classe java à la racine de ton application.
Conclusion, de la même manière qu'éclipse permet l'édition des propriétés d'un projet dans lesquelles apparait le CLASSPATH du projet, il faut que tu gère un CLASSPATH pour tes projets (dans ton futur ide), ou au moins pour le début, intégrer la notion de CLASSPATH (liste de répertoire dans lesquels essayer de trouver la classe java que tu veux loader.
Voilà, j'espère que ces explications t'aideront dans l'avancement de ton projet.
Bon courage
ortys4
Messages postés
254
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010
51
21 févr. 2008 à 15:39
21 févr. 2008 à 15:39
Re
Déja merci pour votre réponse qui à pas mal éclairé ma lanterne, mais je vois pas trop comment le mettre dans mon code, j'ai modifié la methode de loadEdiClass de cette manière :
En fait j'ai rajouter une variable de type classPath (avec l'import qui va avec) mais ma class ce trouvant dans C:/Courreur.class n'est tjr pas trouvé. Si vous avez encore 5 min à me consacrer.
public Class loadEdiClass(String aName) throws ClassNotFoundException
{
Class ret = null;
byte buffer[] = null;
ClassPath cp = new ClassPath("C:/");
System.out.println(aName);
//InputStream is = getClass().getResourceAsStream(aName+".class");
try
{
InputStream is = cp.getInputStream(aName+".class");
if (is != null)
{
try
{
buffer = new byte[is.available()];
is.read(buffer);
ret = defineClass(aName, buffer, 0, buffer.length);
resolveClass(ret);
}
catch(IOException e)
{
throw new ClassNotFoundException(aName);
}
}
else
{
throw new ClassNotFoundException(aName);
}
}
catch(IOException e)
{
e.printStackTrace();
}
return ret;
}
Voila merci de votre aide.
Déja merci pour votre réponse qui à pas mal éclairé ma lanterne, mais je vois pas trop comment le mettre dans mon code, j'ai modifié la methode de loadEdiClass de cette manière :
En fait j'ai rajouter une variable de type classPath (avec l'import qui va avec) mais ma class ce trouvant dans C:/Courreur.class n'est tjr pas trouvé. Si vous avez encore 5 min à me consacrer.
public Class loadEdiClass(String aName) throws ClassNotFoundException
{
Class ret = null;
byte buffer[] = null;
ClassPath cp = new ClassPath("C:/");
System.out.println(aName);
//InputStream is = getClass().getResourceAsStream(aName+".class");
try
{
InputStream is = cp.getInputStream(aName+".class");
if (is != null)
{
try
{
buffer = new byte[is.available()];
is.read(buffer);
ret = defineClass(aName, buffer, 0, buffer.length);
resolveClass(ret);
}
catch(IOException e)
{
throw new ClassNotFoundException(aName);
}
}
else
{
throw new ClassNotFoundException(aName);
}
}
catch(IOException e)
{
e.printStackTrace();
}
return ret;
}
Voila merci de votre aide.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
21 févr. 2008 à 16:12
21 févr. 2008 à 16:12
Oui effectivement puisque tu fais un 'getClass().get...' il faut juste spécifier le nom de la classe, sans son extension. D'ou l'erreur de load.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ortys4
Messages postés
254
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010
51
30 juin 2008 à 10:26
30 juin 2008 à 10:26
Bonjour,
Oui on peut dire qu'il est terminé, mais il n'est pas utilisable pour développer. Maintenant si vous le voulez pour les sources, ya pas de soucis.
Oui on peut dire qu'il est terminé, mais il n'est pas utilisable pour développer. Maintenant si vous le voulez pour les sources, ya pas de soucis.