Portál AbcLinuxu, 1. května 2025 15:53

Beryl & Java6, v okně vykreslovaného swingem není nic vidět

30.7.2007 12:16 | Přečteno: 1889× | Arch Linux | Výběrový blog | poslední úprava: 30.7.2007 12:45

Chyba se projevuje při použití berylu a třeba Netbeans, nebo čehokoli, co renderuje pomocí swingu. Zajímavé je, že compiz tím netrpí, a právě toho využijeme ;-), spuštěný beryl bude detekován jako compiz a všechno bude tak jak má. Více o tomto bugu.

Jdeme na to

připravíme si adresáře (pozor na disku kde budeme pracovat musíte mít alsepoň 0.5 GB)

mkdir -p /var/tmp/java/src
mkdir -p /var/tmp/java/rt

než něco začneme upravovat, pořídíme si zálohu (jak jinak)

cp /opt/java/jre/lib/rt.jar /opt/java/jre/lib/rt.jar.orig

teď si třídy zkopírujeme a rozpakujeme na místo, kde provedeme potřebné úpravy

cp /opt/java/jre/lib/rt.jar /var/tmp/java/rt/rt.zip
cd /var/tmp/java/rt
unzip rt.zip

Na už překompilovaných třídách úpravu uděláme jen těžko, takže si stáhneme zdrojové kódy od javy, pozor balík je drobet větší (+100 BM), takže pokud máte pomalou linku, můžete si jít udělat kafíčko :)

cd ../src
wget http://www.java.net/download/jdk6/6u2/promoted/b05/jdk-6u2-fcs-src-b05-jrl-22_jun_2007.jar

(pozor ohlídejte si verzi, budu se snažit udržovat návod aktuální, ale člověk nikdy neví, a třeba to bude časem opraveno a přímo v javě ;))

Teď si rozpakujeme zdrojáky, ale pozor, potřebujeme spustit javovskou aplikaci, takže si přepněte jiný okenní manager než beryl (například `kwin --replace`)

java -jar jdk-6u2-fcs-src-b05-jrl-22_jun_2007.jar

jako cestu kam se mají rozbalit zvolte

/var/tmp/java/src

Nyní přejdem ke třídám

cd j2se/src/solaris/classes/

upravíme XNETProtocol.java, takže jej otevřete pomocí svého oblíbeného editoru

vim sun/awt/X11/XNETProtocol.java

na řádku 309 změníme z

        try {   
            net_wm_name_cache = new String(net_wm_name, charSet);
            return net_wm_name_cache;
        } catch (java.io.UnsupportedEncodingException uex) {
            return null;
        }

na

        try {   
            net_wm_name_cache = new String(net_wm_name, charSet);
            if(net_wm_name_cache.equalsIgnoreCase("beryl")) {
                net_wm_name_cache = "compiz";
            }       
            return net_wm_name_cache;
        } catch (java.io.UnsupportedEncodingException uex) {
            return null;
        }

tohle právě umožní, že detekovaný beryl bude dále považován za compiz :)

teď smažeme původní třídy, které potom nahradíme

cd /var/tmp/java/rt
rm sun/awt/X11/XNETProtocol.class
cp ../src/j2se/src/solaris/classes/sun/awt/X11/XNETProtocol.java sun/awt/X11

teď budeme kompilovat změněné třídy

javac -d . sun/awt/X11/*.java

zaktualizujeme změněné soubory

zip -f rt.zip sun/awt/X11/*

přepíšeme starý tr.jar

cp rt.zip /opt/java/jre/lib/rt.jar

konečně můžeme s berylem používat i swingové aplikace :)


čerpal jsem z archivu googlu, kde jsem nalezl návod ze zrušené wiki berylu

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Beryl & Java6, v okně vykreslovaného swingem není nic vidět, obrázek 1

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

30.7.2007 12:34 phero | skóre: 17 | blog: techblog
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
a to se vyplati
30.7.2007 12:54 Petr Masopust | skóre: 14
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokud se nepletu tak tohle je jenom workaround ktery maskuje nejakou jinou chybu quli ktere to ve skutecnosti nejde, na to by patch nebyl ?
vogo avatar 30.7.2007 12:58 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Java není můj dobrý kobyl, a netroufal bych si dělat nějaké velké zásahy, protože ten kód není moc… ne nic hezkého
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
30.7.2007 12:55 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
Co je to v tom Sunu za prasata? A tohle tomu ještě nasadí korunu! Zprasit část kódu pro jinou zprasenou část, aby předstírala, že se používá jiný prasečí wm než ve skutečnosti. Asi by bylo lepší to doprasit to do té už zprasené části a nezaprasovávat další.
freshmouse avatar 30.7.2007 13:05 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Prasata jedna...
Algi avatar 30.7.2007 13:13 Algi | skóre: 1 | blog: Sinner
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
no, v podstatě tam jsou prasárny dvě:

1) podtržítka - to se v Javě používat nemá, Sun to "zakazuje", ale sám to používá:)

2) detekce WM - je to zbytečné, v podstatě se tahle práce může nechat na samotném WM (popř. OS, nebo kdo to má na starosti). někdo se nad tím už u toho bugu rozčiloval, že používá nějaký exotický WM a u něj, že Swing nefunguje správně. ale řešit to chlapci rozhodně nechtějí, protože je za to urgujou lidi _dost_ dlouho.

pozn.: Jenom mě překvapuje, jak chce Sun prosazovat ten svůj Solaris, když si pro něj nedokážou ani pořádně napsat implementaci Javy. Pro svůj vlastní operační systém!
I'm a firestarter, twisted firestarter...
30.7.2007 13:18 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
No jistě, v Sunu detekujou to, zda jde o wm, který dělá reparenting, svou prasoenumerační metodou. Když už to chce někdo "opravit", tak ať to doprasí tam a vyprasí se na prasení jinde.
30.7.2007 13:39 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Zprasit část kódu pro jinou zprasenou část, aby předstírala, že se používá jiný prasečí wm než ve skutečnosti.
Většinou tomu manažeři říkají enterprise ;-)
When your hammer is C++, everything begins to look like a thumb.
30.7.2007 14:16 tomm | skóre: 7 | blog: tomm's software | Sokolov
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
LOL :-D
GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
Vykook avatar 30.7.2007 14:14 Vykook | skóre: 23 | blog: Tomas
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
A kdo se v tom nechce šťourat dvě hodiny, tak si dá do /etc/profile tento řádek: export AWT_TOOLKIT="MToolkit"
Nejde nám o dobro druhých. Nejde nám o bohatství. Jde o čisté opojení mocí.
Algi avatar 30.7.2007 14:20 Algi | skóre: 1 | blog: Sinner
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
zkus si potom napsat uvozovky a zjistíš, že to není až zas tak dobrý nápad...
I'm a firestarter, twisted firestarter...
Vykook avatar 30.7.2007 14:41 Vykook | skóre: 23 | blog: Tomas
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Zjistil jsem že to je dobrý nápad, uvozovky sem napsal. Nebo je háček někde jinde?
Nejde nám o dobro druhých. Nejde nám o bohatství. Jde o čisté opojení mocí.
Algi avatar 30.7.2007 15:03 Algi | skóre: 1 | blog: Sinner
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
tak to by mě docela zajímal použitý WM a klávesnice. jestli máš anglickou, tak je to v pohodě, ale s českou mi to zlobí, ať používám Gnome, nebo KDE.
I'm a firestarter, twisted firestarter...
Vykook avatar 30.7.2007 16:02 Vykook | skóre: 23 | blog: Tomas
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Ano i s českou klavesnicí ;-) Jde o Beryl 0.2.1-1, Gnome 2.18.3
Nejde nám o dobro druhých. Nejde nám o bohatství. Jde o čisté opojení mocí.
vogo avatar 30.7.2007 20:53 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
až na to, že tohle funguje IMHO tak maximálně na intel grafikách, mě to rozhodně nefunguje, a Netbeansy třeba skončí chybou
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
Vykook avatar 30.7.2007 23:37 Vykook | skóre: 23 | blog: Tomas
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
S xorg driverem radeon to běží.
ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
Nejde nám o dobro druhých. Nejde nám o bohatství. Jde o čisté opojení mocí.
30.7.2007 16:25 peto
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
Nekresli v tejto verzii swing defaultne cez opengl? Potom by stacil nejaky prepinac na prikazovom riadku.
vogo avatar 30.7.2007 20:53 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
tak sem s přepínačem
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
31.7.2007 12:36 peto
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Tak asi nepouziva, viac Java 2d properties. Mozno sa staci pohrat s tymi prepinacmi.
Max avatar 31.7.2007 07:46 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč používat beryl, když tu máme compiz-fusion ?
Zdar Max
PS:včera jsem ho zkoušel a měl jsem místo firefoxu jedno černý okno :-/, ale dělalo to jen v něm ...
Měl jsem sen ... :(
David Watzke avatar 31.7.2007 10:01 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Když to bylo jen ve Firefoxu, tak je to dobrý ;-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
vogo avatar 31.7.2007 10:15 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: Beryl & Java6, v okně vykreslovaného swingem není nic vidět
Až bude nějaká celá verze a nejlépe až bude v repositáři a nebude viset na půlce gnome
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.