·圖解Java開發工具JBuilder 9.0·JBuilder2006破解補丁·JBuilder2007----嶄新的Java開發工具·用JBuilderX開發WEB應用程序·如何在JBuilder2007中配置MyEclipse·圖解JBuilderX安裝與實踐·使用JBuilder2007開發Web應用程序·與JBuilder2007的第一次親密接觸·用JBuilder9 開發Struts實例·使用JBuilder2007開發Web Services 首先告訴大家,拿到了JBuilder 2006的軟件包直接跑到Ubuntu Edgy上開裝鐵定是會失敗的!為什麼呢?因為Borland在開發JBuilder 2006的時候,是以某些內核版本比較低的Linux發行版進行開發的,我們先看看Borland給出的Release Notes中的說明吧:
Borland® JBuilder® 2006 Enterprise for Linux
Intel Pentium III/800 MHz or higher (or compatible)
Red Hat® Enterprise Linux 3.0
Novel SuSE Enterprise Linux 9 現在用Ubuntu 6.10作為JBuilder 2006的運行平台,會存在一些兼容的問題,原因是JDK的某些版本對NPTL支持不是很好,很大程度上還是依賴於LinuxThread Library的實現。關於Linux中線程庫的實現改變,我簡單說明如下(沒有仔細考究,大家湊活一下... ^ ^ ):
Linux Distribution
Linux Kernel
GNU C Library
Linux Threading Library
Red Hat® Enterprise Linux 3.0
kernel-smp-2.4.21-3.EL.i686
glibc-2.3.x, compat-glibc-2.2.4
NPTL,LinuxThread
Ubuntu Edgy 6.10
2.6.17-10-generic SMP i686
glibc-2.4
NPTL,LinuxThread(棄用)已知在NPTL上面存在問題的Java VM有:Sun JRE < 1.4.1 和 IBM JRE (版本不知,再次汗!)所以呢,一般的做法會用更改LD_ASSUME_KERNEL環境變量的方法去強制改變內核默認的線程庫的實現,使用舊的LinuxThread模式:
LD_ASSUME_KERNEL 對應 LinuxThread 的說明
2.4.19
Linuxthreads with floating stacks
2.2.5
Linuxthreads without floating stacks說到這裡讓我們回到開頭,為什麼JBuilder 2006在Ubuntu Edgy上面會安裝失敗呢?甚至連安裝的界面都出不來呢!?--b 我們看看這個操作就知道了:
[XPort@ubuntu ~] $ grep "LD_ASSUME_KERNEL" /media/cdrom/Disk1/InstDatahttp://Linux.chinaitlab.com/VM/install.bin linux_LD_ASSUME_KERNEL_hack=0; linux_LD_ASSUME_KERNEL_hack=1# LD_ASSUME_KERNEL for Native POSIX Threading Library on some Linux distros export LD_ASSUME_KERNEL=2.2.5 # unset the LD_ASSUME_KERNEL in cause we don't need it unset LD_ASSUME_KERNEL # check our rules for setting LD_ASSUME_KERNEL linux_LD_ASSUME_KERNEL_hack=1if [ $linux_LD_ASSUME_KERNEL_hack -eq 1 ]; then LD_ASSUME_KERNEL=2.2.5 export LD_ASSUME_KERNEL <-- 這裡有賦值的動作,要用到LinuxThread的線程模式[xport@ubuntu ~] $所以說見鬼:“JBuilder 2006默認的安裝文件中卻還是要使用舊的線程庫模式,但Ubuntu Edgy裡面已經沒有了LinuxThread的實現”!改變LD_ASSUME_KERNEL的值,我們會得到下面的錯誤,順便說一句,我的Java版本是1.5.0_08 :
[xport@ubuntu ~] $ export LD_ASSUME_KERNEL=2.4.19[xport@ubuntu ~] $ lsls: error while loading shared libraries: librt.so.1: cannot open shared object file: No sUCh file or Directory那麼,要如何來Hack呢?把整個光盤的內容復制到用戶目錄中的一個目錄中(如~/Temp/JBE2006),操作如下:
[xport@ubuntu ~] $ cd ~/Temp/JBE2006/Disk1/InstDatahttp://Linux.chinaitlab.com/VM/* 對安裝文件進行備份 */[xport@ubuntu VM] $ mv ./install.bin ./install.bin.borland/* 把原本安裝文件中的LD_ASSUME_KERNEL操作注釋掉,並寫入新文件 */[xport@ubuntu VM] $ cat ./install.bin.borland sed "s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/" > ./install.bin[xport@ubuntu VM] $ chmod a+x ./install.bin[xport@ubuntu VM] $ cd ~/* 請務必改寫Shell提示符,以免Install AnyWhere報錯 */[xport@ubuntu ~] $ export PS1="> "/* 建議用Ubuntu的JDK進行安裝 */> sh ./install.bin LAX_VM /usr/lib/jvm/java-1.5.0-sun/jre/bin/java這樣就可以看到之前在Windows中熟悉的安裝向導界面了,直接“下一步,下一步”繼續...!安裝完成後,JBuilder 2006如下: 點擊查看大圖