如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

          這個題目其實有點大了,其實說的問題很小。
          大家都說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會首先把<configfilepath>當成類路徑去讀取,如果讀取失敗再把它當作文件路徑去讀,例如如果您設定/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之類的服務器是怎么解決這個問題的。
          JDBMonitor最強大的無侵入式數據庫監控、日志工具。
          COWNEW團隊,最專業的開源團隊!官方網站:
          www.cownew.com

          posted on 2006-05-25 01:39 CowNew開源團隊 閱讀(918) 評論(3)  編輯  收藏

          評論

          # re: java不一定就跨平臺 2006-05-25 02:22 胖老鷹
          如文中所說,類似listenerconfig=這樣的配置,存在可能混淆的因素,我覺得比較好的解決方法是要求listenerconfig=xxx,其中xxx支持URL的語法。即可以是
          file:///root、file:///c:\、classpath:com/cownew等等,這樣寫配置的人、看配置的人、以及解析的代碼中都沒有二義性,比較清晰。
          也可以增加一層假設,就是沒有file、classpath的協議名字的情況下,默認為文件路徑,如果要指定classpath路徑,要求必須使用classpath:xxxx格式。  回復  更多評論
            

          # re: java不一定就跨平臺 2006-05-25 06:36 wolfsquare
          沒了解過JDBMonitor,不過這么做就太“侵入”了。
          我原來還以為是,照原驅動JDBC的寫法,在協議前加個標識listenerconfig=就好,其他照舊,為什么不這樣做呢?  回復  更多評論
            

          # re: java不一定就跨平臺 2006-05-25 07:37 charon@xxx
          這個好像和java是不是跨平臺一點關系也沒有。
          這個題目出得也太@##$%!了  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 晋州市| 巴中市| 当雄县| 疏勒县| 工布江达县| 米脂县| 伊金霍洛旗| 洛川县| 焉耆| 富宁县| 内黄县| 孟津县| 华阴市| 洛川县| 丘北县| 榆林市| 乡城县| 乐山市| 濮阳县| 大余县| 繁昌县| 航空| 拉萨市| 姜堰市| 卓尼县| 周宁县| 蚌埠市| 姚安县| 沈阳市| 香格里拉县| 嵊州市| 凤庆县| 敖汉旗| 桐柏县| 班戈县| 哈尔滨市| 阿拉善左旗| 吴桥县| 镇赉县| 大宁县| 阿图什市|