Portál AbcLinuxu, 1. května 2025 15:53
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.
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
Tiskni
Sdílej:
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
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.