2009年12月29日 星期二

解決 JBoss AS 無法啟動的問題

在不同的 Windows 作業系統執行 JBoss AS,有時候會發生沒辦法啟動的問題,原因是比較新的版本,run.bat 會透過 Windows 內建的 findstr.exe 檔案,去判斷現在找到的 JVM 支不支援 -server 這個選項,或者是不是個 64-Bit 的 JVM。問題是,findstr.exe 檔案所在的位置,有時候不知道為什麼並不在 PATH 環境變數之中。

解決方式也很簡單:要嘛把 findstr.exe 複製到一個 PATH 裡頭找得到的路徑,或是把 findstr.exe 的路徑加到 PATH 環境變數裡面,這樣就可以了。

PS. 一般來說,findstr.exe 檔案放在 C:\Windows\System32 目錄之中。

PS2. 另外兩個常見會導致無法執行 JBoss AS 的問題,一個是把 JDK 裝在像 C:\Program Files 這種路徑當中有空白的目錄之中,另一個是沒有設定 JAVA_HOME 環境變數。

2009年12月24日 星期四

NetBeans 攻略 - Tomcat 設定

正常在 Windows 下直接執行 Tomcat,可以正確辨識出中文的 Locale ID,顯示中文訊息:

image

很奇怪,如果透過 NetBeans 啟動 Tomcat,就會變成亂碼,調整字型也沒有用:

image

這時候請選取 NetBeans 功能表的 Tools、Servers,在 Tomcat 設定中點選 Platform 標籤頁,在 VM Options 裡面加上以下的設定:

-Duser.language=en -Duser.country=US

image

這樣就不會有亂碼了:

image

不過我改用繁體中文的 Locale ID,卻行不通,不知道原因為何?

2009年12月14日 星期一

NetBeans 攻略 - 組態設定

最近比較認真一點使用 NetBeans,所以就會碰到一些問題,必須要想辦法解決:

  • 功能表跟對話方塊內容會變亂碼

這個問題有幾個可能,一個是因為 JDK 5 與 JDK 6 對字型 Anti-Aliasing 處理的方式不同,另一個可能是找不到包含中文字的系統字型,所以解決方式也有幾種:

  1. 如果是用 JDK 6 的話,可以檢查一下有沒有啟用 Clear Type 功能?如果沒有的話,啟用 Clear Type 功能或許就解決了。JDK 6 的 Swing 預設會啟用 Anti-Aliasing 功能,所以 Windows XP 的 Clear Type 也要啟動配合才比較不會有問題。
  2. 如果是用 JDK 6 的話,也可以試看看在 %JAVA_HOME%\jre\lib\fonts 目錄裡面新增一個 fallback 子目錄,裡面放個有中文字的字型,比方說微軟正黑體。重新啟動 NetBeans 之後,說不定就解決了。不知道為什麼系統明明就有內含中文字的字型,但是 Swing 就是看不到。
  3. 如果是用 JDK 6,但是前兩種作法都行不通的話,那就改用舊一點的 JDK 6,或是用 JDK 5 試看看,說不定就解決了。JDK 5 預設好像不會啟動 Anti-Aliasing 功能,所以問題比較少,但是字型顯示的時候也會比較醜一點。JDK 6 有些版本的 Swing 問題比較多,比方說 Update 12 與 Update 17,避掉會比較好。
  4. 還沒想到。
  • 想要使用其他語系的介面

如果像我不太習慣中文介面,想要改用英文介面的話,可以在執行 NetBeans 的時候多加一個參數 --locale,後面跟個 Locale ID。比方說,netbeans.exe --locale en_US。注意是兩個減號。

  • 功能表跟標籤頁的字體太小

這個問題的解法通常都是在執行 NetBeans 的時候多加一個參數 --fontsize,後面跟個數字,預設值是 11。比方說:netbeans.exe --fontsize 15。注意是兩個減號。不過,設定了之後不見得會有用,因為有些 Swing 的 Look and Feel 沒有寫好,功能表跟其他一些控制項的字體大小都寫死了,這時候用這個參數就沒有用,必須要順便換個寫的比較好的 Look and Feel 才可以。

  • Output 視窗的字體太小

這個問題以前的解法通常都是用上面提到的 --fontsize,但是有一個缺點,就是除了 Output 視窗字體變大之外,其他地方的字體也都跟著變大。現在有一個比較好的作法,只要在 Output 視窗裡面按下滑鼠右鍵,就可以更改字體大小,還可以更換好看一點的字體:

image

如果要動態調整大小,最新的秘技是點一下 Output 視窗,然後按著 Ctrl 鍵不放,把滑鼠滾輪上下推動,就可以調整大小了!

  • 更換 Look and Feel

Swing 有趣的地方就是可以更改 Look and Feel。NetBeans 是用 Swing 寫的,所以當然可以換 Look and Feel,換法就是在執行的時候加個 --laf 參數,後面跟個 Look and Feel 的主類別。比方說:netbeans.exe --laf javax.swing.plaf.metal.MetalLookAndFeel。注意是兩個減號。如果像 Metal 與 Nimbus 這種 JDK 內建的 Look and Feel,也可以寫簡寫:netbeans.exe --laf Metal。如果是 3rd-Party 寫的 Look and Feel,記得要把相關 JAR 檔案放到 Class Path。

  • 使用 Unicode 編碼

雖然 NetBeans 專案的預設編碼是 UTF-8:

image

但是 NetBeans 的一些 Wizard 在自動產生 Java 類別的時候,還是會有一些怪怪不太正確的地方,因為在繁體中文的 Windows 底下,編碼其實還是 MS950:

image

這時候可以考慮使用英文語系加上指定 Unicode 編碼的方式,來解決這個問題,也就是在執行 NetBeans 的時候多加個參數 -J-Dfile.encoding=UTF-8,編碼就會變成 UTF-8:

image

-J 的意思指的是,後面的參數是要給 JVM 用的,不是給 NetBeans 用的。-Dkey=value 則是一般執行 Java 程式時控制 JVM 環境變數的方式。注意這邊都是一個減號,然後 –J-D 要連在一起。

  • 指定 NetBeans 使用的 JDK

如果系統找得到 JDK,NetBeans 就會自動使用找到的那一份。如果想要指定使用特定位置的 JDK,可以在執行 NetBeans 的時候加個 --jdkhome 參數,後面跟著 JDK 的路徑。比方說:netbeans.exe –jdkhome “../../jdk”。注意是兩個減號。

  • 指定 NetBeans 存放 Plugin、Update、與組態設定的目錄

NetBeans 預設會把一堆事後下載與更新的檔案,還有一些設定值,放在 Home Directory 裡面,這對我們製作一個 Portable NetBeans 會造成很大的問題。如果想要指定 NetBeans 存放這些檔案的位置,可以在執行 NetBeans 的時候加個 --userdir 參數,後面跟著存放的路徑。比方說:netbeans.exe –-userdir “../../config”。注意是兩個減號。這個目錄也不可以位於 NetBeans 目錄之內。

以上這些參數可以加在 netbeans.exe 後面,也可以固定寫在 NetBeans 的組態設定檔案裡頭,就是 NetBeans 目錄下的 etc/netbeans.config 檔案:

netbeans_default_userdir="../../config"
netbeans_jdkhome="../../jdk"
netbeans_default_options="原有內容 --locale en_US -J-Dfile.encoding=UTF-8"