/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Et lidt avanceret problem med dynamiske kl~
Fra : Thorbjørn Ravn Ander~


Dato : 29-04-02 15:42


Jeg har et problem med det kode jeg tidligere har skrevet om her i
gruppen, nemlig noget der laver JavaBeans ud fra en specifikation af
felter+typer, og saa returnerer et objekt af denne type. Det letteste
var faktisk at faa lavet Java Byte Coden ved hjaelp af BCEL
biblioteket fra Jakarta, og saa har jeg nu rodet med ClassLoadere i
laengere tid end jeg umiddelbart bryder mig om. Det har jeg dog nu
faaet til at fungere, saaledes at jeg nu faar kaldt loadClass og
findClass korrekt, og det virker tilsyneladende fint naar jeg koerer
mine demoting, og arbejder i JSP-sider almindeligt.

(Mit maal er at lave noget i stil med)

{
java.util.ArrayList al = abf.createBeanArrayList(stmt.executeQuery( "select distinct donor_ab0 from ab0_rules order by donor\
_ab0"));
pageContext.setAttribute( "bloodTypes", al);
java.util.ListIterator i = al.listIterator();
while( i.hasNext()) {
Object o = i.next();
out.println( o + " : " + BeanUtils.describe( o) + "<br>");
}
}

som virker i det jeg faar noget fornuftigt ud af udskiftsloekken
ovenfor, og jeg faar en ArrayList puttet i pagekonteksten.

Mit problem er at _foerste_ gang jeg goer ovenstaaende, saa virker det
fint og praecis som jeg gerne vil have naar jeg skal bruge den i en
<htmltions> i en Struts <html:form>, men herefter brager det ned
med en ClassCastException i
sun.reflect.GeneratedMethodAccessor14.invoke.

Forskellen imellem de to, i min kode, er minimal, saa det maa vaere et
eller andet subtilt med ClassLoaderen eller lignende, jeg har
misforstaaet.

Er der nogen der har set noget lignende, og har nogen forslag til hvad
jeg goer nu. Det er deprimerende taet paa at fungere praecis som jeg
gerne vil have

Den fulde fejlmeddelelse er:

java.lang.IllegalArgumentException: java.lang.ClassCastException@f44ec7
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.struts.util.PropertyUtils.getSimpleProperty(PropertyUtils.java:717)
at org.apache.struts.util.PropertyUtils.getNestedProperty(PropertyUtils.java:426)
at org.apache.struts.util.PropertyUtils.getProperty(PropertyUtils.java:453)
at org.apache.struts.taglib.html.OptionsTag.doEndTag(OptionsTag.java:230)
at _k__jsp._jspService(/k2/k.jsp:146)
at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
at com.caucho.jsp.Page.subservice(Page.java:485)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:179)
at com.caucho.server.http.Invocation.service(Invocation.java:288)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:937)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:536)
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

 
 
Thorbjørn Ravn Ander~ (30-04-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 30-04-02 11:31

thunderbear@bigfoot.com (Thorbjørn Ravn Andersen) writes:

> Mit problem er at _foerste_ gang jeg goer ovenstaaende, saa virker det
> fint og praecis som jeg gerne vil have naar jeg skal bruge den i en
> <htmltions> i en Struts <html:form>, men herefter brager det ned
> med en ClassCastException i
> sun.reflect.GeneratedMethodAccessor14.invoke.

Det lader til at Reflect metoderne ikke bryder sig om at klasser
bliver defineret af flere classloadere (aner ikke hvorfor), og at jeg
derfor kan fjerne symptomerne ved at lave min ClassLoader statisk saa
der kun er een.

Det er lidt langhaaret det der
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Filip Larsen (30-04-2002)
Kommentar
Fra : Filip Larsen


Dato : 30-04-02 19:26

Thorbjørn Ravn Andersen skrev

> Det lader til at Reflect metoderne ikke bryder sig om at klasser
> bliver defineret af flere classloadere (aner ikke hvorfor), og at jeg
> derfor kan fjerne symptomerne ved at lave min ClassLoader statisk saa
> der kun er een.

ClassLoader instanser sidder i et hieraki hvor der gælder, at en klasse
loaded med ClassLoader A kun kan "se" klasser der er loaded via A eller A's
parent.

Der er en god gennemgang af hvordan man laver en ClassLoader på
http://www.javaworld.com/javaworld/jw-03-2000/jw-03-classload.html


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste