Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Xwinus 13. 01. 2013, 17:52:22
-
Zdravím,
pokud bych potřeboval nahradit nějakou standartní třídu JVM, např javax.swing.JFrame za vlastní, jak donutím JVM aby používal mojí verzi javax.swing.JFrame a ne defaultní? Potřebuji to udělat bez zásahu do vlastního JVM, kvůli přenositelnosti.
Díky
-
Nepojde to cez vlastny ClassLoader?
-
http://stackoverflow.com/questions/4838301/how-to-overwrite-classes-from-jdk
-
Overridovat triedu z JVm je v 99.9% pripadov zly pristup, vzhladom na to ze nevies anglicky a ani hladat na google, by som povedal ze sa snazis o nieco velmi zle premyslene.
Kazdpopadne vela stastia, ja by som to spravil tak ze by som si prekopiroval zdrojak tej classy, zmenil a skompiloval a vlozil to do rt.jar v JRE.
-
Overridovat triedu z JVm je v 99.9% pripadov zly pristup, vzhladom na to ze nevies anglicky a ani hladat na google, by som povedal ze sa snazis o nieco velmi zle premyslene.
Kazdpopadne vela stastia, ja by som to spravil tak ze by som si prekopiroval zdrojak tej classy, zmenil a skompiloval a vlozil to do rt.jar v JRE.
Ne, nemám v úmyslu nic jiného než zkusit něco provést s třídou XTrayIconPeer.IconCanvas, jejíž metoda paint() může za tak úžasný vzhled pozadí tray icon v Linuxu
-
Ne, nemám v úmyslu nic jiného než zkusit něco provést s třídou XTrayIconPeer.IconCanvas, jejíž metoda paint() může za tak úžasný vzhled pozadí tray icon v Linuxu
Copak to nejde podědit a překrýt? :O
-
Abandon sanity, ye who enter!
Obavam sa, ze to je neriesitelne a jednoduche prekrytie fungovat nebude, kedze je to trieda sun.awt.X11.XTrayIconPeer$IconCanvas, kde sa vobec nepredpoklada, ze to bude vyvojar. Je to inak znamy bug [1] od roku 2006, oprava zrejme v Java 8.
To naozaj smrdi kompilovanim celej platformy: ani si nechcem predstavit, ze ake sialene zavislosti su tam nasekane. (Nebodaj este AWT a jeho integracia s nativnymi ovladacimi prvkami...) To bez ohladu na to, ci sa skompiluje len jedna trieda alebo cele rt.jar.
Ak sa to aj podari, tak sa pripravte na veselice s bootclasspath u vsetkych ludi, kde to ma bezat, co je nastavenie mimo schopnosti bezneho pouzivatela.
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6453521
-
Abandon sanity, ye who enter!
Obavam sa, ze to je neriesitelne a jednoduche prekrytie fungovat nebude, kedze je to trieda sun.awt.X11.XTrayIconPeer$IconCanvas, kde sa vobec nepredpoklada, ze to bude vyvojar. Je to inak znamy bug [1] od roku 2006, oprava zrejme v Java 8.
To naozaj smrdi kompilovanim celej platformy: ani si nechcem predstavit, ze ake sialene zavislosti su tam nasekane. (Nebodaj este AWT a jeho integracia s nativnymi ovladacimi prvkami...) To bez ohladu na to, ci sa skompiluje len jedna trieda alebo cele rt.jar.
Ak sa to aj podari, tak sa pripravte na veselice s bootclasspath u vsetkych ludi, kde to ma bezat, co je nastavenie mimo schopnosti bezneho pouzivatela.
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6453521
V tomhle nejsem odborník, ale co jsem pochopil, kdybych svojí třídu načetl před tou systémovou z rt.jar, použila by se ta moje, že? Nebylo by tedy možné a jednodušší nějak upravit ClassLoader aby nejdříve načetl ty moje? Jen pro zajímavost, našel jsem zajímavý způsob patchování tříd za běhu: http://armoredbarista.blogspot.cz/2012/01/patching-java-at-runtime.html (http://armoredbarista.blogspot.cz/2012/01/patching-java-at-runtime.html)
-
Zdravím,
pokud bych potřeboval nahradit nějakou standartní třídu JVM, např javax.swing.JFrame za vlastní, jak donutím JVM aby používal mojí verzi javax.swing.JFrame a ne defaultní? Potřebuji to udělat bez zásahu do vlastního JVM, kvůli přenositelnosti.
Díky
Pres volbu xbootclasspath (se vsemi riziky :-)
-
Abandon sanity, ye who enter!
Obavam sa, ze to je neriesitelne a jednoduche prekrytie fungovat nebude, kedze je to trieda sun.awt.X11.XTrayIconPeer$IconCanvas, kde sa vobec nepredpoklada, ze to bude vyvojar. Je to inak znamy bug [1] od roku 2006, oprava zrejme v Java 8.
To naozaj smrdi kompilovanim celej platformy: ani si nechcem predstavit, ze ake sialene zavislosti su tam nasekane. (Nebodaj este AWT a jeho integracia s nativnymi ovladacimi prvkami...) To bez ohladu na to, ci sa skompiluje len jedna trieda alebo cele rt.jar.
Ak sa to aj podari, tak sa pripravte na veselice s bootclasspath u vsetkych ludi, kde to ma bezat, co je nastavenie mimo schopnosti bezneho pouzivatela.
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6453521
Ve skutecnosti neni build OpenJDK zase tak hroznej, zavislosti jsou, ale jen na beznych devel knihovnach. Viz http://icedtea.classpath.org/wiki/Main_Page#Quickstart_.26_Building a http://icedtea.classpath.org/wiki/BuildRequirements