Skip navigation.

Linux的用户

OS就应该是自己可以定制的。

Posts tagged with "Java"

Beryl & Java的解决最后办法-_-最好的吧

, ,

Beryl和Java是死对头吗?怎么老是出问题的-_-
Compiz倒是解决的不错了。(情况不清楚,可是JDK6那里有修正BUG)
当然Compiz能做到的,Beryl也应该能咯;-P

---
在wiki.Beryl-project.org有解决的办法。题目是JAVA。
---
操作步骤很复杂吧,对于习惯在Windows里面漫游的人来说,体会这个可是很难咯。哈哈
我来简单说说步骤,有错的话,请指出咯:~)
---
注意替换/usr/java/jdk1.6.0为你自己的JDK目录哦
---
1:准备目录
mkdir -p /tmp/java/src 
mkdir -p /tmp/java/rt 

2:提取Java的运行时的类包
cp /usr/java/jdk1.6.0/jre/lib/rt.jar /usr/java/jdk1.6.0/jre/lib/rt.jar.orig 
cp /usr/java/jdk1.6.0/jre/lib/rt.jar /tmp/java/rt/rt.zip 
cd /tmp/java/rt 
unzip rt.zip 


3:下载JAVA源代码(最新的在JDK download page)
cd ../src 
wget http://www.java.net/download/jdk6/6u1/promoted/b03/jdk-6u1-ea-src-b03-jrl-19_jan_2007.jar 

4:提取源代码
java -jar jdk-6u1-ea-src-b03-jrl-19_jan_2007.jar 

5:修正代码
5-1:修正里面的j2se/src/solaris/classes/sun/awt/X11/XWM.java和j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java两个文件
touch patch 
vim patch 
(这里和原文使用nano的编辑器不同的)
5-2:复制下面的代码到里面咯
diff -ur src.orig/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java 
--- src.orig/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java 2007-02-24 08:21:07.000000000 -0500 
+++ src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java 2007-02-24 08:23:40.000000000 -0500 
@@ -692,7 +692,7 @@ 
 // ConfigureNotify, only the one from X with zero 
 // coordinates. This is the workaround to get real 
 // location, 6261336 
- // Do the same for non-reparenting WMs (Compiz, Looking Glass) 
+ // Do the same for non-reparenting WMs (Compiz, Looking Glass, Beryl) 
 switch (XWM.getWMID()) { 
 case XWM.CDE_WM: 
 case XWM.MOTIF_WM: 
@@ -700,6 +700,7 @@ 
 case XWM.SAWFISH_WM: 
 case XWM.COMPIZ_WM: 
 case XWM.LG3D_WM: 
+ case XWM.BERYL_WM: 
 { 
 Point xlocation = queryXLocation(); 
 if (log.isLoggable(Level.FINE)) log.log(Level.FINE, "New X location: {0}", new Object[]{xlocation}); 
diff -ur src.orig/j2se/src/solaris/classes/sun/awt/X11/XWM.java src/j2se/src/solaris/classes/sun/awt/X11/XWM.java 
--- src.orig/j2se/src/solaris/classes/sun/awt/X11/XWM.java 2007-02-24 08:21:07.000000000 -0500 
+++ src/j2se/src/solaris/classes/sun/awt/X11/XWM.java 2007-02-24 08:22:58.000000000 -0500 
@@ -79,7 +79,8 @@ 
 ICE_WM = 10, 
 METACITY_WM = 11, 
 COMPIZ_WM = 12, 
- LG3D_WM = 13; 
+ LG3D_WM = 13, 
+ BERYL_WM = 14; 
public String toString() { 
 switch (WMID) { 
 case NO_WM: 
@@ -106,6 +107,8 @@ 
 return "Compiz"; 
 case LG3D_WM: 
 return "LookingGlass"; 
+ case BERYL_WM: 
+ return "Beryl"; 
 case UNDETERMINED_WM: 
 default: 
 return "Undetermined WM"; 
@@ -534,6 +537,10 @@ 
 return isNetWMName("LG3D"); 
} 

+ static boolean isBeryl() { 
+ return isNetWMName("beryl"); 
+ } 
+ 
/* 
* Is Metacity running? 
*/ 
@@ -546,7 +553,7 @@ 
} 

static boolean isNonReparentingWM() { 
- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM); 
+ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM ||Beryl和Java是死对头吗?怎么老是出问题的-_-
Compiz倒是解决的不错了。(情况不清楚,可是JDK6那里有修正BUG)
当然Compiz能做到的,Beryl也应该能咯;-P XWM.getWMID() == XWM.BERYL_WM); 
} 

/* 
@@ -738,6 +745,8 @@ 
 awt_wmgr = XWM.COMPIZ_WM; 
 } else if (isLookingGlass()) { 
 awt_wmgr = LG3D_WM; 
+ } else if (isBeryl()) { 
+ awt_wmgr = BERYL_WM; 
 } else if (doIsIceWM && isIceWM()) { 
 awt_wmgr = XWM.ICE_WM; 
 } 
@@ -1387,6 +1396,7 @@ 
 case XWM.ENLIGHTEN_WM: 
 return readInsetsArray(window, XA_E_FRAME_SIZE, insets); 
 case XWM.COMPIZ_WM: 
+ case XWM.BERYL_WM: 
 return readInsetsArray(window, XA_FRAME_EXTENTS, insets); 
 default: 
 return false; 

5-3:运行下面的命令来修正
chmod +x patch 
patch -p1 < patch 

6:删除那些我们准备要替换的
cd ../rt 
rm sun/awt/X11/XDecoratedPeer* 
rm sun/awt/X11/XWM.*
rm sun/awt/X11/XWM\$* 

7:拷贝修正完成的类
cp ../src/j2se/src/solaris/classes/sun/awt/X11/XWM.java sun/awt/X11 
cp ../src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java sun/awt/X11 

8:编译好修正的源代码
javac -d . sun/awt/X11/*.java

9:打包好新的运行时,替代原来旧的类包
zip -f rt.zip sun/awt/X11/* 
cp rt.zip /usr/java/jdk1.6.0/jre/lib/rt.jar

Java 与 Beryl

,

最新出来的JDK6Update1修正了Java和Beryl的问题。
其实不应该是说Beryl,应该说是修正了Compiz,Xgl和Java的问题。
ChangeLog : 6429775 Xgl/Compiz/Java 1.5/Swing problem
---
介绍下,在Beryl-Project论坛里面ksc91u网友给出的方法。
下载Beryl的SVN。修改其中的
beryl-core/src/display.c第52行
#define WMNAME "compiz"


beryl-core/src/screen.c第806行
#define MYNAME "compiz"

再编译,就OK
---
I did a little trick to cheat JVM that we are running compiz instead of beryl.(原文)
其实就是把标题改得和Compiz一样

引用Latest JDK 6 Xgl Problem, Quick Fix

Java和Beryl的问题

, , ,

许多Java程序在Beryl里面是不能看到主窗口的内容,(空白一片)
---
有四种方法可以修正这个问题:
第一种方法:
添加 export AWT_TOOLKIT="MToolkit" 到启动环境里面,系统里面/etc/profile最后添加就行了

|echo 'export AWT_TOOLKIT="MToolkit"' >> /etc/profile|

第二种方法:
添加不能显示的窗口到trailfocus的屏蔽列表里面,这个。。。我找不到字段来添加-_-|||

第三种方法:
是修改Swing,哈哈,没有尝试这个。
给出链接,方便会的人修改http://forum.beryl-project.org/post-49499

最后一种是:
更新吧~,吧Java更新到Java 6就能够使用了。
---
查了许多帖子后,都是说这个问题是由于Java的Bug而造成的。
而且第一种方法并不能完全修正这个问题(空白)。