[Javalist] Classloader anonymous gond
istvan.ketler at lhsystems.com
istvan.ketler at lhsystems.com
2013. Ápr. 15., H, 19:20:28 CEST
Ez elég bonyolult, minden egyes pluginnak saján classloader-e van. Ez a classloader helper-ként megkapja azon pluginek classloader-ét, akiktől függ (mert azokat láthatja). Leszármazni meg egy olyanból származik le, aki látja az application lib-eket, illetve magát a framework-öt.
De nem ez a baj, a megfelelő classloader lép akcóba, csak rosszkor, hiszen belső osztályok csak a befogadó osztállyal együtt léteznek, a befogadó példányosítása környékén kéne nekik is példányosulniuk, de mivel ez csak egy metódus meghívása esetén példányosodna, ezért - talán egyfajta lazy loading miatt - csak a metódus meghívásakor tenné ezt. Ott meg ki tudja miért de nem hajlandó. A classloader resource-ként egyébként el is éri, csak class-ként betölteni nem akarja. Valami nagyon alap dolgot nézek be...
Üdv,
Iván
______________________________
István Ketler
Senior Consultant
Lufthansa Systems Hungária Kft.
GUI Service Center
Mobile Solutions Team, Development Center Danube
Neumann János u. 1/e
1117 Budapest
Hungary
Phone: +36 1 887-2815
Fax: +36 1 887-0577
Mobile: +36 30 600-4936
E-mail: istvan.ketler at LHsystems.com<mailto:istvan.ketler at LHsystems.com>
www.LHsystems.com<http://www.lhsystems.com/>
From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Zsombor
Sent: Monday, April 15, 2013 6:53 PM
To: Java lista
Subject: Re: [Javalist] Classloader anonymous gond
Milyen class loadert használsz, amikor létrehozod az eredeti példányokat ? Azt kéne beállítani hiváskor mint a thread context classloadere ... szvsz.
Zs
2013/4/15 <istvan.ketler at lhsystems.com<mailto:istvan.ketler at lhsystems.com>>
Ezt a metódust hívom meg, és ennek a new ActionListener során hasal el:
public void init() {
setLayout(new BorderLayout());
add(new JLabel("Fix label"), BorderLayout.NORTH);
JButton button = new JButton("Add label");
button.addActionListener(
new ActionListener() {
/**
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(final ActionEvent $e) {
add(new JLabel("Dynamically added label"), BorderLayout.CENTER);
revalidate();
repaint();
}
}
);
add(button, BorderLayout.SOUTH);
}
A meghívás a Jide docking és action framework-öt is használva így történik:
public void actionPerformed(final ActionEvent $e) {
LegEditorPlugin.getInstance().getLogger().logAction("Start legeditor action initiated.");
LegEditorPlugin.getInstance().getViewController().setVisible(true);
}
A ViewController mozgósítja a DockableFrame setVisible metódusát, amiben ez van:
synchronized (_initCalled) {
if (!_initCalled) {
_associatedView.init();
_initCalled = true;
}
}
A kivétel pedig azért jön, mert nincs betöltve a myClassName$1 osztály (az anonymous class), mire meghívja a classloader-emet, és ennek a findClass metódusa szomorodik el teljes joggal, hiszen ezt az osztályt csak a befogadó osztály példányával együtt lehetne példányosítani.
java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com/lsyh/nlpgui/legeditor/view/LegEditorView$1
Caused by: java.lang.ClassNotFoundException: com.lsyh.nlpgui.legeditor.view.LegEditorView$1
Amikor a befogadó osztályt betöltöm, esetleg akkor kéne betölteni a benne lévő anonymous osztályokat is, de azt hogyan? Ugorjak neki a fájlrendszernek, keressem a $N végűeket?. Látszólag az URLClassLoader és felmenői semmi ilyesmit nem tesznek.
Üdv,
Iván
______________________________
István Ketler
Senior Consultant
Lufthansa Systems Hungária Kft.
GUI Service Center
Mobile Solutions Team, Development Center Danube
Neumann János u. 1/e
1117 Budapest
Hungary
Phone: +36 1 887-2815<tel:%2B36%201%C2%A0887-2815>
Fax: +36 1 887-0577<tel:%2B36%201%C2%A0887-0577>
Mobile: +36 30 600-4936<tel:%2B36%2030%C2%A0600-4936>
E-mail: istvan.ketler at LHsystems.com<mailto:istvan.ketler at LHsystems.com>
www.LHsystems.com<http://www.lhsystems.com/>
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fovarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Peter Sipos
From: javalist-bounces at lists.javaforum.hu<mailto:javalist-bounces at lists.javaforum.hu> [mailto:javalist-bounces at lists.javaforum.hu<mailto:javalist-bounces at lists.javaforum.hu>] On Behalf Of Peter Verhas
Sent: Monday, April 15, 2013 5:30 PM
To: Java lista
Subject: Re: [Javalist] Classloader anonymous gond
Ha anonymous akkor hol adod meg a nevet ami nincs es mit?
On Monday, April 15, 2013, wrote:
Anonymous
Sent from my cellular
From: Peter Verhas [mailto:peter at verhas.com]
Sent: Monday, April 15, 2013 05:22 PM
To: Java lista <javalist at lists.javaforum.hu<mailto:javalist at lists.javaforum.hu>>
Subject: Re: [Javalist] Classloader anonymous gond
Abstract vagy anonymous?
On Monday, April 15, 2013, wrote:
Nem, a hivott metodus definial egy jbuttont amihez hozzaadok egy action lostenert
Ha a listener egy betoltheto osztaly akkor muxik es ha kell peldanyosit
Ha a listener egy anonymous osztaly akkor elhasal, nem tudja betolteni a name$1 osztalyt
Sent from my cellular
From: Peter Verhas [mailto:peter at verhas.com]
Sent: Monday, April 15, 2013 05:14 PM
To: Java lista <javalist at lists.javaforum.hu<mailto:javalist at lists.javaforum.hu>>
Subject: Re: [Javalist] Classloader anonymous gond
És ha jól értem akkor hasal el, amikor a metódus egy abstract osztályban van definiálva, amelyiket kiterjesztettél, és a kiterjesztett nem abstract osztályt adtad meg az XML-ben, mint példányosítandó osztályt, meg a metódust, amit az abstract-ból örökölt.
--
Dipl. Ing. Peter Verhas
peter at verhas.com<mailto:peter at verhas.com>
+41791542095<tel:%2B41791542095>
skype: verhas
On 2013.04.15., at 16:58, <istvan.ketler at lhsystems.com<mailto:istvan.ketler at lhsystems.com>> wrote:
Context
Frameworkot irok
Dinamikusan szedi ossze a plugineket
Xml-ben action-oket definial classname es metodusname megadasaval
Feluletre gombokat teszek ha megnyomjak akkor a korabban peldanyositott osztaly korabban letrehozott es eltarolt Method-jara adok ki egy invoke-ot
Thx
Ivan
Sent from my cellular
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fovarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Peter Sipos
From: KETLER, ISTVAN
Sent: Monday, April 15, 2013 04:51 PM
To: 'javalist at lists.javaforum.hu<mailto:javalist at lists.javaforum.hu>' <javalist at lists.javaforum.hu<mailto:javalist at lists.javaforum.hu>>
Subject: Re: [Javalist] Classloader anonymous gond
Egy listenert allitok be egy abban a metodusban deklaralt buttonhoz
Sent from my cellular
--
Verhás Péter
ügyvezető
Verhás & Verhás Szoftver Manufaktúra Kft.
peter at verhas.com<mailto:peter at verhas.com>
t: +36(30)9306805<tel:%2B36%2830%299306805>
skype: verhas
_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu<mailto:Javalist at lists.javaforum.hu>
http://lists.javaforum.hu/mailman/listinfo/javalist
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fovarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Peter Sipos
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130415/37ba58e5/attachment.html>
További információk a(z) Javalist levelezőlistáról