Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
550 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Charger dynamiquement des JAR dans une applet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Charger dynamiquement des JAR dans une applet

n°789159
noldor
Rockn'roll
Posté le 07-07-2004 à 14:23:47  profilanswer
 

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 :
 

Code :
  1. <html>
  2. <body>
  3.    <applet
  4.       codebase="/java"
  5.       archive=MonProg.jar
  6.       code=com.noldor.MonProg width=500 height=300>
  7.    </applet>
  8. </body>
  9. </html>


 
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:
 

Code :
  1. Main-Class: com.noldor.MonProg
  2. Class-path: plugin1.jar plugin2.jar


 
Lorsque l'utilisateur veut utiliser le plugin2, je charge "paresseusement" la classe :
 

Code :
  1. Class x = Class.forName("com.plugins.Plugin2" );
  2. Constructor[] cons = x.getConstructors();
  3. cons[0].newInstance(null);


 
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
mood
Publicité
Posté le 07-07-2004 à 14:23:47  profilanswer
 

n°789628
noldor
Rockn'roll
Posté le 07-07-2004 à 21:47:44  profilanswer
 

pas de succès avec ce topic :(
je tente un up

n°789765
the real m​oins moins
Posté le 08-07-2004 à 01:02:08  profilanswer
 

pas sur mais:
http://java.sun.com/docs/books/tut [...] nload.html
 

Citation :

More about the Class-Path Header
 
    If an applet or application uses more than one extension, you can list multiple URLs in a manifest. For example, the following is a valid header:
 
Class-Path: area.jar servlet.jar images/
 
    In the Class-Path header any URLs listed that don't end with '/' are assumed to be JAR files. URLs ending in '/' indicate directories. In the preceding example, images/ might be a directory containing resources needed by the applet or the application.
 
    You can also specify multiple extension URLs by using more than one Class-Path header in the manifest. For example:
 
Class-Path: area.jar
Class-Path: servlet.jar
 
    Download extensions can be "daisy chained", meaning that the manifest of one download extension can have a Class-Path header that refers to a second extension, which can refer to a third extension, and so on.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°789767
the real m​oins moins
Posté le 08-07-2004 à 01:03:48  profilanswer
 

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?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°789819
noldor
Rockn'roll
Posté le 08-07-2004 à 09:09:21  profilanswer
 

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


---------------
http://runnerstats.net
n°790000
the real m​oins moins
Posté le 08-07-2004 à 10:58:30  profilanswer
 

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 [:kiki]
 
 
.. et utiliser le CL de l'applet (plutot que d'en instancier un nouveau) ça aiderait pas? http://java.sun.com/sfaq/#appletCL


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°790049
noldor
Rockn'roll
Posté le 08-07-2004 à 11:17:24  profilanswer
 

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 [:kiki]
 
 
.. et utiliser le CL de l'applet (plutot que d'en instancier un nouveau) ça aiderait pas? http://java.sun.com/sfaq/#appletCL


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 :/


---------------
http://runnerstats.net

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Charger dynamiquement des JAR dans une applet

 

Sujets relatifs
Java convertir string en plusieurs float[Javascript] Modifier dynamiquement un href depuis un select
Traduire '<a href="mailto:nom@truc.fr"></ a>' en Javaj'ai mon Applet qui déconne avec internet explorer
[PB JVM] Exécuter du java depuis php[Java] Question bête sur le double héritage
[java][Algo] Tableau 2 dimensions (dynamique?)Applet Java, lire un fichier .txt [java.policy&security access denied]
Créer un bouton dynamiquement 
Plus de sujets relatifs à : [JAVA] Charger dynamiquement des JAR dans une applet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR