程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2EE綜合--java語言不一定就跨平台

J2EE綜合--java語言不一定就跨平台

編輯:關於JAVA

這個題目其實有點大了,其實說的問題很小。

大家都說java是跨平台的,可是用Java寫出來的代碼能不能真正的跨平台還是要開發人員來把握。

我今天在CSDN上看到一位朋友給JDBMonitor提出的一條bug:

"如果我的系統是Linux,那個listenerconfig=就難寫了,因為我要是寫成/root/什麼的,他會認為是classpath,實際上這是個物理路徑,期待改進"

因為在上一個小版本中,我為了同時適應用戶通過類路徑指定配置文件的位置,比如,com/cownew/config.xml,也能通過真實的文件路徑制定文件的位置,比如c:/config.XML

所以我就要判斷用戶給出的路徑是類路徑還是文件路徑,我的實現方式是判斷路徑是否以a-z的字母開頭,並且後邊跟著":/",如果是,則為文件路徑,否則為類路徑。

但是在unix(Linux)下,絕對路徑則是/root/cfg/config.XML的形式,我就給誤判斷成是類路徑了。這樣在這些平台下就報錯了,我采用如下方式解決:

JDBMonitor會首先把當成類路徑去讀取,如果讀取失敗再把它當作文件路徑去讀,例如如果您設定/root/cfg/config.xml,本意是想加載文件路徑/root/cfg/下的文件config.xml,但是如果您的類路徑中有root.cfg這個包,並且包下同樣有config.xml這個文件,那麼JDBMonitor會去讀root.cfg中的文件config.xml,而非/root/cfg/config.XML。

示意代碼如下:

InputStream is = null;

is = this.getClass().getResourceAsStream(configFile);

if(is==null)

{

try

{

is = new FileInputStream(configFile);

} catch (FileNotFoundException e)

{

is = null;

}

}

不知道有沒有更好的辦法解決,請高手指教。有時間也去看看那些tomcat之類的服務器是怎麼解決這個問題的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved