2010年4月3日 星期六

執行 *.jnlp 檔案的問題

看到噗友推薦的一個科學模擬網站
http://phet.colorado.edu/simulations/translations.php
有中文翻譯,裏面有些是 flash 有些是 java 程式( jnlp 格式)
寄件者 openSUSE 11.2

在使用預設的 IceTea Web Start 時卻出現
寄件者 openSUSE 11.2

KDEInit 無法啟動 /usr/bin/javaws 的錯誤訊息
這可能是 openSUSE 將 MozillaFirefox 整合到 kde 時沒注意到的

有很多種解決方法:
甲案:
事實上 /usr/bin/javaws 並不存在
正確檔案路徑應該為 /usr/lib/jvm/jre-1.6.0-openjdk/bin/javaws (IceTea Web Start)
不過由於 java run time 執行環境與版本繁多
openSUSE 和很多發行版都使用 update-alternatives 來連結控制
所以您最好使用 /usr/lib/jvm/jre/bin/javaws
來作為預設路徑
您可以
#ln -s /usr/lib/jvm/jre/bin/javaws /usr/bin/javaws

這樣不論您使用 jre-sun 或 jre-openjdk 都可以順利開啟 jnlp 檔案
但這是理論上...
事實上使用 openjdk 提供的 javaws 執行的結果是
$  /usr/bin/javaws Downloads/lasers_zh_TW.jnlp
netx: Unexpected net.sourceforge.jnlp.ParseException: Invalid XML document syntax. at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1200)

所以還是請您用 yast 安裝太陽牌的 java 環境
寄件者 openSUSE 11.2

理論上會自動將您的 java 環境改過來
但是 firefox 預設的開啟程式並不會變(bug?)

若 java 環境沒變更
執行
# update-alternatives --all

選擇 jre-sun (有三處)
這樣就可以正常開啟了

乙案:
既然出現錯誤訊息的是 KDEInit
我們就來改 KDE
可以直接在 kde 的系統設定->進階->檔案關聯
搜尋 jnlp
在應用程式優先順序選擇 系統->顯示器->Sun Java...Web Start
寄件者 openSUSE 11.2

您也可以直接輸入
/usr/lib/jvm/jre/bin/javaws 或 /usr/bin/javaws (如果您已經依照甲案做連結)
這時再開啟 jnlp 檔時,預設程式會變成 Sun Java Web Start
寄件者 openSUSE 11.2


丙案:
非 KDE 的使用者可以直接在 firefox 中變更
編輯->偏好設定->應用程式
寄件者 openSUSE 11.2


最後,還是 java 中文顯示的問題
如果您的 java 程式中文出現方塊
您可以在 java 字型目錄中建立 fallback 目錄
將要使用的字型連結到此目錄中
# cd /usr/lib/jvm/jre/lib/fonts
# mkdir fallback
# cd fallback
# ln -s /usr/share/fonts/truetype/uming.ttf .

寄件者 openSUSE 11.2

我覺得這裡有點奇怪
發現了 /usr/sbin/fonts-config 出了問題
這是一個 SUSE 的便利 script
其實就是 SuSEconfig --module fonts 時執行的內容
因為 novell 人事縮減,原本維護這個 script 的 Mike FABIAN 好像離職了
(以前常在 m17n ML上看到他)
結果關於 java 字型的部份並未更新
請修改 第1706行附近,將
my @fontconfig_SuSE_properties_globs ="/usr/lib*/jvm/java-1.5.?-sun-*/jre/lib/fontconfig.SuSE.properties";

改成
my @fontconfig_SuSE_properties_globs = "/usr/lib*/jvm/jre/lib/fontconfig.SuSE.properties";

修改完後
執行
# SuSEconfig --module fonts

只要您的系統中有
AR PL ShanHeiSun Uni (11.2 繁體中文版預設安裝)
FZMingTiB
AR PL Mingti2L Big5
中的任一個,java 繁體中文字型就不會有問題了
bug report:
https://bugzilla.novell.com/show_bug.cgi?id=591706

2 則留言:

Farley Lai 提到...

請問一下:
目前預設openJDK版的javaws會把jar裝到哪去呢?不小心安裝的APP要如何移除呢?-uninstall選項似乎不起作用,直接執行javaws也只出現certificates管理視窗,而非application管理視窗.....@@

swyear 提到...

您執行看看 which javaws 看有何結果?
或者執行 rpm -ql java-1_6_0-openjdk | grep javaws
openjdk 我這裡無法正常使用,您要不要換 java-1_6_0-sun?