Re: [classique: tuer une classe]

"Dupont Alex" <[email protected]> Sun, 19 Jun 2011 14:30:32 +0200
Newsgroups gmane.comp.java.french.general
Message-ID <000c01cc2e7c$aec6fa80$bd124556@deepblue>
Bonjour,

Une (une seule) boite d'aspirine d'avance! Il faudra que je me mette au cul 
du camion en attendant que les antidépresseurs y tombent :-)

Je vais voir ça, mais certainement pas avant mardi (ou lundi soir au plus 
tôt), vu les problèmes annoncés, je risque de tomber chèvre dés la première 
heure de la semaine...

"bêêêê"

Merci

al




----- Original Message ----- 
From: "Rémi Forax" <[email protected]>
To: <[email protected]>
Sent: Saturday, June 18, 2011 8:12 PM
Subject: Re: [classique: tuer une classe]


>
> On 06/18/2011 07:05 PM, Dupont Alex wrote:
>>
>> Bonsoir,
>>
>> Question farfelue:
>> - Comment peut-on tuer une classe?
>>
>> Merci
>>
>> Al
>
> On tue son classloader (si on on a chargé la classe avec un classloader 
> perso,
> sinon on peut pas) et on s'assure qu'il n'y a plus d'objet
> de cette classe qui traine.
>
> Pour utiliser son classloader perso il faut hériter de 
> java.lang.ClassLoader
> et redéfinir findClass() (pas loadClass() sous peine de trouble mental du 
> genre
> ClassCastException entre j.l.String et j.l.String [1])
> ou utiliser un URLClassLoader [2] mais dans ce cas la classe ne doit pas 
> être
> disponible à partir du classpath seulement en utilisant l'URL indiqué.
>
> Que cela soit avec ton propre classloader ou un URLClassLoader,
> il doit être créeé avec en paramètre le ClassLoader de l'application 
> (celui-qui
> charge le Main) que l'on obtient facilement comme ceci:
>   Main.class.getClassLoader()
> Dans le cas contraire, il est possible d'avoir des messages d'erreur du 
> genre,
> je ne trouve pas j.l.Object.
>
> De façon général, c'est assez fun de jouer avec les classloaders mais
> faut bien avoir lu la doc sinon cela peut rapidement devenir prise de 
> tête.
> Enfin, dans un environement genre JEE ou Spring, le container a déjà
> tendance à jouer avec les classloaders donc si ton appli fait de même
> prépare une boite d'aspirine d'avance.
>
> Rémi
> [1] 
> http://download.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#findClass%28java.lang.String%29
> [2] 
> http://download.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html
>
>
>