dynamic classpath et plugins [Résolu] - Java - Programmation
Marsh Posté le 27-02-2007 à 16:33:52
Bon,
pour avancer un peu, etdisposant du code source de JMF,
javax.media.PlugInManager.addPlugIn()
fait appel à javax.media.pim.PlugInManager.addPlugIn()
qui retourne false sous les conditions suivantes:
Code :
|
Le cas où le plugin existe deja dans la base est exclu, je peux le vérifier.
Reste le cas avec l'appel à getClassForName:
Code :
|
Il y a bien une histoire de "context" classloader mais slt pr le jdk1.2.
Voilà si qqn a des idées ....
Marsh Posté le 01-03-2007 à 13:42:30
Bon je crois que j'aurais du commencer mon sujet par
j'ai une java.lang.ClassNotFoundException.......
qui peut m'aider???
Marsh Posté le 02-03-2007 à 16:39:06
Ici, au boulot, on utilise:
JPF
Tu trouves le projet ici:
http://jpf.sourceforge.net/
Ca marche plutot bien et c'est pas excessivement dur a utiliser.
Je n'ai jamais utilisé JMF donc je peux pas t'aider sur ce point la...
Marsh Posté le 02-03-2007 à 23:04:02
Merci pour le lien.
C'est un projet interessant.
Le truc, c'est qu'en fait, j'arrive déjà à charger dynamiquement des classes; j'ai déjà implémenté tout un mécanisme, et je sais qu'au sein de mon appli, les classes sont chargées. Mais la lib externe qu'est JMF refuse d'enregistrer ces nouvelles classes, alors que si elles sont dans le claspath au démarrage, ça fonctionne...
C'est vraiment bizzarre.
Je vais essayer de regarder un peu le code de JPF, pt-e utilisent-ils des des techniques sioux que je ne connais pas.
Autrement, je vais aussi essayer de charger mes plugins par le biais de JPF, pt-e que ca fonctionnera ...
Marsh Posté le 30-03-2007 à 17:12:33
djok_fb>> Avec le JPF framework, est-ce que tu arrives à charger des classes depuis n'importe où dans ton appli, sans faire appel au framework ?
Car mon pb, c'est que si je fais:
Code :
|
avec loader un URLClassLoader, pas de pb ca fonctionne bien,
mais
Code :
|
ne fonctionne pas.
J'ai bel et bien un problème de délégation entre mes ClassLoader et je n'arrive pas à le résoudre.
Marsh Posté le 30-04-2007 à 13:36:42
Il suffit de spécifier le path où sont posés les plugins lors de l'implémentation de JPF.
Dans mon cas, c'est une appli web, on lui spécifie le chemin dans l'appli et ca roule.
Marsh Posté le 01-05-2007 à 03:26:36
Salut,
wapcamer a écrit : Je cherche dans mon programme à rajouter des plugins sans avoir à modifier le programme (un peu comme dans eclipse). |
T'es sur d'avoir un tel besoin aussi "lourd", alors qu'un petit Command pattern avec delegation peut suffire ?
Du genre formater un contenu en Texte (TextFormater.class) ou en PDF (PdfFormater.class) ou en HTML (HtmlFormater.class) ou ... :
new ContentDisplay(TextFormater.class);
__________________
class ContentDisplay
{
private ContentFormater contentFormater;
public Class formater;
public ContentDisplay (Class formater)
{
try
{
contentFormater = (ContentFormater)formater.newInstance();
}
catch ( InstantiationException e )
catch ( IllegalAccessException e )
.........................
contentFormater.formatContent();
__________________
public abstract class ContentFormater
{
public void formatContent();
class TextFormater extends ContentFormater
{
public void formatContent()
{
// implementation du formatage Texte
}
Pour moi ca permet de simuler des plugins (TextFormater.class, PdfFormater.class, HtmlFormater.class), il suffit d'appeler la classe souhaitee et de refaire "run", dans mon cas ca suffit amplement.
Evidemment si tu dois gerer le depot a chaud des plugins, la il te faut un truc du genre OSGI ou JPF effectivement.
@++ !
Marsh Posté le 03-05-2007 à 21:58:59
bugbreeder a écrit : |
Ben oui je suis sur. C'est le moins lourd et le plus facile à utiliser pr moi.
Mais bon, j'ai finalement trouvé mon bonheur, exactement ce que je voulais. J'ai du chercher beaucoup et passer du côté obscure de la force en JAva, des trucs que je soupçonnais même pas. Voilà le lien vers un topic chez sun qui propose des soluce.
http://forum.java.sun.com/thread.j [...] 0&tstart=0
En tt cas je px maintenant avancer dans mon prog.
Merci aux propositions de solutions.
Marsh Posté le 27-02-2007 à 15:36:10
Bonjour,
Je cherche dans mon programme à rajouter des plugins sans avoir à modifier le programme (un peu comme dans eclipse).
J'ai utilisé la même méthode que dans ce post http://forum.hardware.fr/hfr/Progr [...] tm#t768648 afin de charger dynamiquement mes classes. Dynamiquement, parce que les librairies ne font pas partie du classpath au démarrage de l'appli.
Hors ça marche bien!!
Le problème, c'est que lorsque je veux enregistrer mes plugins avec la classe JMF
, cela échoue systématiquement. Alors que si je démarre l'appli avec les jar présents dans le classpath, l'enregistrement se passe correctement.
Je me demande si le je ne devrais pas utiliser le SystemClassLoader plutot qu'un URLClassLoader créé à la volée, pq dans ce cas, les classes chargées ne "seraient" pas accessibles par toutes les classes ... mais ca me semble un peu tordu et je ne vois d'ailleurs pas trop cmt faire.
Merci de votre aide.
Message édité par wapcamer le 03-05-2007 à 22:01:22
---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi