Charger dynamiquement des JAR dans une applet [JAVA] - Java - Programmation
Marsh Posté le 08-07-2004 à 01:02:08
pas sur mais:
http://java.sun.com/docs/books/tut [...] nload.html
Citation : More about the Class-Path Header |
Marsh Posté le 08-07-2004 à 01:03:48
déjà comment ça se passe pour ce d/l ? ton applet vois qu'il lui manque une classe donc elle essaie de chopper ce qu'il y a sur le Class-Path de ton meta inf? Ou c'est plus subtil?
Marsh Posté le 08-07-2004 à 09:09:21
the real moins moins a écrit : déjà comment ça se passe pour ce d/l ? ton applet vois qu'il lui manque une classe donc elle essaie de chopper ce qu'il y a sur le Class-Path de ton meta inf? Ou c'est plus subtil? |
pour simplifier (en virant le cas de la JVM Microsoft), c'est ça : quand j'appelle Class x = Class.forName("com.plugins.Plugin2" ); l'applet se rend compte qu'elle ne l'a pas, et va la chercher sur le Class-Path du meta-inf
Marsh Posté le 08-07-2004 à 10:58:30
ouais donc forcément aucun moyen de savoir de quel jar ça vient. j'vois pas pourquoi j'ai vaguement cru que les mettre sur deux lignes changerait quoi que ce soit
.. et utiliser le CL de l'applet (plutot que d'en instancier un nouveau) ça aiderait pas? http://java.sun.com/sfaq/#appletCL
Marsh Posté le 08-07-2004 à 11:17:24
the real moins moins a écrit : ouais donc forcément aucun moyen de savoir de quel jar ça vient. j'vois pas pourquoi j'ai vaguement cru que les mettre sur deux lignes changerait quoi que ce soit |
non, en effet, l'applet peut pas savoir dans quel jar chercher
Utiliser le ClassLoader de l'applet ? je vois pas comment faire, y a pas de moyen de spécifier une URL malheureusement
Marsh Posté le 07-07-2004 à 14:23:47
Je développe une applet MonProg qui interagit avec 2 plugins (pour simplifier) nommés plugin1 et plugin2
Ces plugins ne sont pas utilisés par la majorité des utilisateurs, c'est pourquoi je ne souhaiterai les charger que nécessaire.
Le fichier HTML décrivant mon applet ressemble à ça :
J'ai trouvé une solution qui marche à moitié :
dans le fichier manifest, je fais pas référence à plugin1 et plugin2 dans le Class-path:
Lorsque l'utilisateur veut utiliser le plugin2, je charge "paresseusement" la classe :
cela fonctionne bien à une nuance près : le classloader de l'applet va chercher dans l'ordre des archives du classpath donné dans le fichier manifest. Résultat, lorsque j'instancie Plugin2, il me charge plugin1.jar puis plugin2.jar
J'aimerais biensur qu'il ne me charge que plugin2.jar
Est-ce faisable ?
J'ai pensé à utiliser une URLClassLoader, mais c'est impossible d'instancier un nouveau CLassLoader dans une applet sans signer son applet (ce que j'aimerais éviter).
---------------
http://runnerstats.net