<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 115  文章 - 481  trackbacks - 0
    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(19)

    隨筆檔案(115)

    文章檔案(4)

    新聞檔案(1)

    成員連接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

      Spring是一個非常優秀的開源項目,然而,跟其它任何優秀的系統產品一樣,也存在著這樣那樣的問題,我們喜歡稱為Bug。Spring中的Bug確實不少,今天為了充實“中文問題沒商量”主題,舉一個不算很重要,也比較簡單理解的一個Bug示例。
      這里提前申明,這個話題不是針對Spring項目,因此請“春迷”們自重、沒事勿擾,文中不足之處歡迎大家批評指教。
      我們知道,一個開源軟件項目,給用戶的單元測試最基本的要求是能全部通過測試,在Java中就是在運行單元測試的時候應該要看見一個綠條。Spring項目的單元測試寫得非常好,也非常全面。然而,單元測試中卻有一些問題,在中文路徑上無法完全通過測試,必須放到英文路徑下才能完全通過測試,因此,這屬于一種“沒商量”的中文問題。
      單元測試:
      包:org.springframework.beans.factory.xml
      類:XmlBeanFactoryTests
      方法:testFileSystemResourceWithImport
      錯誤圖示:
    ?


      詳細錯誤信息:
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [C:\Documents%20and%20Settings\Administrator\%e6%a1%8c%e9%9d%a2\spring\spring-framework-2.0-rc2\bin\org\springframework\beans\factory\xml\resource.xml]; nested exception is java.io.FileNotFoundException: C:\Documents%20and%20Settings\Administrator\%e6%a1%8c%e9%9d%a2\spring\spring-framework-2.0-rc2\bin\org\springframework\beans\factory\xml\resource.xml (系統找不到指定的路徑。)
    Caused by: java.io.FileNotFoundException: C:\Documents%20and%20Settings\Administrator\%e6%a1%8c%e9%9d%a2\spring\spring-framework-2.0-rc2\bin\org\springframework\beans\factory\xml\resource.xml (系統找不到指定的路徑。)
    ?at java.io.FileInputStream.open(Native Method)
    ?at java.io.FileInputStream.<init>(FileInputStream.java:106)
    ?at org.springframework.core.io.FileSystemResource.getInputStream(FileSystemResource.java:85)
    ?at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    ?at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:315)
    ?at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:73)
    ?at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:61)
    ?at org.springframework.beans.factory.xml.XmlBeanFactoryTests.testFileSystemResourceWithImport(XmlBeanFactoryTests.java:946)
    ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    ?at java.lang.reflect.Method.invoke(Method.java:585)
    ?at junit.framework.TestCase.runTest(TestCase.java:154)
    ?at junit.framework.TestCase.runBare(TestCase.java:127)
    ?at junit.framework.TestResult$1.protect(TestResult.java:106)
    ?at junit.framework.TestResult.runProtected(TestResult.java:124)
    ?at junit.framework.TestResult.run(TestResult.java:109)
    ?at junit.framework.TestCase.run(TestCase.java:118)
    ?at junit.framework.TestSuite.runTest(TestSuite.java:208)
    ?at junit.framework.TestSuite.run(TestSuite.java:203)
    ?at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
    ?at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

    測試代碼:
    public void testFileSystemResourceWithImport() {
    ??String file = getClass().getResource("resource.xml").getFile();
    ??XmlBeanFactory xbf = new XmlBeanFactory(new FileSystemResource(file));
    ??// comes from "resourceImport.xml"
    ??ResourceTestBean resource1 = (ResourceTestBean) xbf.getBean("resource1");
    ??// comes from "resource.xml"
    ??ResourceTestBean resource2 = (ResourceTestBean) xbf.getBean("resource2");
    ?}
    ?
    出錯原因:
      這個問題是筆者在參與開發EasyJWeb及EasyDBO框架中遇到過的問題,因此很容易就找到了問題的所在。Java的Class.getResource(name)返回的是一個URL,而URL.getFile默認情況下返回的是經過URL編碼后的字符,會把中文等特殊字符變成類似%e6的形式。而一般io構造路徑是沒有自動解碼功能的,所以在中文路徑下要出現錯誤。
    ?
    解決辦法:
      在使用URL.getFile返回的路徑時,使用前需要使用java.net.URLDecoder對路徑進行一次解碼操作。修改后的且能通過測試的方法如下:
    public void testFileSystemResourceWithImport() {
    ??String file = getClass().getResource("resource.xml").getFile();
    ??try{
    ??file=java.net.URLDecoder.decode(file,"UTF-8");
    ??}
    ??catch(Exception e)
    ??{
    ???e.printStackTrace();
    ??}?
    ??XmlBeanFactory xbf = new XmlBeanFactory(new FileSystemResource(file));
    ??// comes from "resourceImport.xml"
    ??ResourceTestBean resource1 = (ResourceTestBean) xbf.getBean("resource1");
    ??// comes from "resource.xml"
    ??ResourceTestBean resource2 = (ResourceTestBean) xbf.getBean("resource2");
    ?}
    ?
    小結:
      由于Spring開源項目的開發團隊中,除了一些喜歡跟在Rod大叔的屁股后面唱中文版贊歌的“春迷”以外,當前似乎還沒有中國人參與到正式的Spring開發小組中。因此,也許沒有在中文路徑下運行過測試用例,導致我這樣的Spring初學者一不小心就遇上這樣的問題。
      問題是解決了,但是卻是一種比較罕見的方式,而且Spring開發小組事先也許沒有預想到或是故意忽略掉的問題,因此,可以稱得上是“沒商量”的中文問題。
      ?(注:本文作者,EasyJF開源團隊 大峽,轉載請保留作者聲明!)
    posted on 2006-08-21 11:45 簡易java框架 閱讀(2219) 評論(30)  編輯  收藏

    FeedBack:
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 13:16 楊一
    在使用spring之前,我曾自己設計了一個配置的樹形結構,來管理配置我的web企業應用項目。但后來接觸了spring我才發現這是我想要的東西。還有orm的思想也是,很多人都曾經這么實踐過。有了更好的東西,我們為什么不用呢,我需要一個配置樹,但我的配置樹卻不支持依賴注入。在我有時間和能力做出更好的東西或發現更好的東西以前,只能用spring了。
    至于您說的spring的bug,我只想說一句話,您參與了windows或linux的開發了嗎?  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 16:39 nononone
    這個問題明顯是URL不支持中文造成的,怎么算是“Spring2.0項目中的Bug一例 ”呢?你覺得這個問題應該由Spring來解決嗎?

    BTW:俺不是“春迷”,請樓主不要神經過敏對號入座。  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 17:40 鬼扯
    鬼扯  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 21:01 建議找本xml的入門讀物
    倒!!!!!!居然直接把UTF-8寫到程序里面去了............
    mmwy的是正解,你要在xml中使用UTF-8字符,至少這個文件的編碼格式.否則,就只能使用這種硬編碼方式
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 21:02 建議找本xml的入門讀物
    上文漏字,應該是:
    至少在開頭指明這個文件的編碼格式

      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 22:10 也來侃侃
      有點意思,難道上面幾位就是大峽說的傳說中的春迷嗎?我剛才試了一下,確實有這個問題,要是Spring的開發小組看了也一定會虛心改正的啊,我們在這里沒必要為此受不了啊。
      BTW:“建議找本xml的入門讀物”,不懂就別裝了好不,這個不關什么XML格式的,是JDK中URL類的問題,希望多看到這樣的文章!
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 23:07 建議找本xml的入門讀物

    你也知道是jdk中的URL類的問題。URL.getFile()不是在默認情況下返回經過URL編碼后的字符,而是所有情況下都這樣。
    把UTF-8硬編碼到程序里面,windows系統下是搞定了,因為windows的內碼天生就是unicode的,別的系統下面試一試?
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-21 23:36 也來侃侃
    @建議找本xml的入門讀物
    我看作者說確實也是Spring項目問題之一啊,難道你不覺得嗎?沒必須跑題吧!  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 00:17 建議找本xml的入門讀物
    和spring其實不搭界。
    這個補丁不是應當spring來打,而是java消除平臺無關性的時候做的.像樓主那樣打補丁,只能說是拆了西墻補東墻.
    打個比方,某家前門鎖壞了,隔三岔五進小偷,沒辦法,只能把后門的鎖拆下來裝到前門。  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 00:42 也來侃侃
    我又來了,PS“建議找本xml的入門讀物”,我看作者的意思只是舉了一個例子吧,“拆了西墻補東墻. ”,不補連運行都運行不起,不管怎么說,補了比沒補好。當然,你要能否拿出一個不需要補的完美方案來呢,有的話不妨拿出來我也學習學習。謝謝作者讓我長了見識,剛剛特意去他們網站看了一下,發現這是一個很有活力的團隊,東西有點多,過幾天再好好看看。這里希望你也能拿出一些東西來讓我長點見識。
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 09:52 建議找本xml的入門讀物
    需要解決方案么?
    搞那么多中文目錄干嗎? 就像以前有個哥們自己搞了一個什么中文編程一樣.自己找切么。
    寫程序就寫程序好了,玩那么多花活干什么. 英文不認識就好好去補英文。也許有人更加喜歡這種:
    如果 五 大于 三 那么
    打印 "你好,世界"
    風格的?那就好好的去玩自己的輪子吧。那也是一片天地。
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 10:04 建議找本xml的入門讀物
    難道有活力就能改變干事情的性質。這個圈子里面最有活力的就是搞流氓軟件的了。
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 10:06 也來侃侃
    @建議找本xml的入門讀物

      在我看來這個例子沒有一個萬能的解決方案的。但作者的例子應該能在windows下的任意操作系統下執行,比Spring項目小組的寫法有所改進。另外,不知道是不是我們跑題了?好像人家是談中文問題吧。
      對了,樓上的朋友那么瞧不起中文,不考慮中文用戶的感受,不知道你孩子生下來是先教他喊“Dad”呢,還是喊“爸爸”,感覺樓上的很清高啊。
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 10:48 楊一
    樓主在指出中文問題這件事情上是對的,大家就事論事。但總覺得把中文問題歸罪給spring有些牽強,我舉個例子:在工業革命早期,工人被剝削,不考慮推翻資本家,卻去砸機器。如果你承認了狗皇帝,就不要抱怨地方官  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 11:30 建議找本xml的入門讀物
    別。選擇性失明就是你的不對了
    樓主明明談的是spring項目中的中文問題,而且把這個歸因于spring的bug,你倒好,直接泛化為中文問題了。
    作為一般使用者,面對中文自然是合理要求,但作為程序員和系統開發者/管理者,在可控范圍內弄出一大堆中文目錄,那就是自己找切。怨不得別人。
    還有,那個平臺相關性是比一致性失敗更加危險的動作。其實,要想只windows下玩,.NET是不二之選,玩java豈不是多此一舉  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 14:23 春迷沒救了
    @楊一,@建議找本xml的入門讀物
      我覺得他是指出了Spring中一些不嚴謹的地方。另外,我不完全贊同windows下.net是不二的選擇這個說法,開發80%還是在windows下吧。好像也沒有針對Spring吧,不是還有幾篇嗎?

      好好看看作者開篇語里面的原話,怎么你就只會為Spring辯護呢,我終于知道作者為什么要不厭其煩的提“春迷”,在我看來,春迷不是一群人,更像一種現象了!
      我幫你們摘過來:
      “這個主題會在我以后的工作遇到一個寫一個,不斷完善。“中文問題沒商量”系列文章的目的除了把本人在工作及學習過程中遇到的一些中文問題拿來跟大家交流以外,一個重要目的是想拋磚引玉,希望能搜集更多的困擾我們的中文問題,歡迎大家把工作中所遇到的無法解決的中文問題提交到這個主題里面。”
      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 15:51 建議找本xml的入門讀物
    easyjf的難道只會扣帽子,naive,不要搞得象紅衛兵那樣。
    前面的哥們不是說了么,這個和spring沒關系,只是jdk的問題。我看樓主的標題不如改成"XXXX沒商量"之jdk的bug,然后立志實現一個jdk,更牛氣了
    在windows下玩就是在windows下開發?別會錯意了。在哪兒開發不重要,關鍵看部署。

      回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 16:12 春迷沒救了
    我這么快也成什么easyjf的了,easyjf是作者所在的網站吧,看來easyjf還真可憐.......不知道樓上又是哪個jf的呢?  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 19:39 溫柔一刀
    路過  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 20:08 建議找本xml的入門讀物
    敢情easyjf們把貼標簽當作自己的專利了?
    貼別人的時候那么爽,被別人貼的時候就開始叫屈了,也太沒品了巴  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 20:15 春迷沒救了
    @建議找本xml的入門讀物
    不想跟你說了,免得連累人家easyjf,建議自己好好去csdn看看春迷們的的精彩表演吧,還嫌不夠丟人!  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-22 23:11 建議找本xml的入門讀物
    hehe.現在想撇清?來不及了。本來就是easyjf的馬甲么,還連累不連累的。
    就easyjf那個名聲,早就那樣了,難道還在乎誰比誰更丟人?  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-24 00:10 旁觀者
    說個跑題的話,很多人并不懷疑樓主的水平,你提出問題,并對自己的項目作出解決方案本身無可厚非,但是別人就不能質疑你結論嗎?技術討論是為了共同進步,不是辯論比賽,要拼命攻擊對方表達中出現的漏洞,從而分出輸贏的結果,技術并不是二元化的,不是非此即彼的。  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-08-30 15:43 little4
    daxia總是能扔出搞笑的命題
    芙蓉xiaxia  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-09-06 12:10 路過
    “石頭”語:素質,注意素質  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-09-07 19:28 黃鵬霄
    看來春迷確實存在啊  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-09-09 09:20 123
    唉,春迷的存在,是中國軟件業的悲哀。  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2006-10-04 12:10 啥叫春迷啊?
    難道就只有春迷嗎?中國軟件業很悲哀嗎?兄弟是做那一方面開發的啊?這么偉大,能拯救中國軟件業嗎?  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2007-01-12 10:16 王彥鋒的技術實踐
    看完無語,大家都是搞技術的,為一些不著調的東東爭論,有點不值得。取其精華,去其糟粕,然也。  回復  更多評論
      
    # re: “中文問題沒商量”之Spring2.0項目中的Bug一例  2007-03-17 12:52 BeanSoft
    早點控制農民比例為10%, 實現工業化才是王道....我就看著2050年能不能達到50%農民了.  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 精品国产亚洲一区二区三区 | 亚洲国产精品ⅴa在线观看| 人妻18毛片a级毛片免费看| 999在线视频精品免费播放观看| 亚洲一级Av无码毛片久久精品| 亚洲性色精品一区二区在线| 在线观看特色大片免费网站| 久久久久久亚洲精品不卡| 一区二区三区免费视频网站| 亚洲一级Av无码毛片久久精品| 一级日本高清视频免费观看| 国产亚洲av人片在线观看| a色毛片免费视频| 久久精品国产亚洲AV果冻传媒| 国产成人精品免费视频动漫| 久久青青草原亚洲av无码app| 3d成人免费动漫在线观看| 亚洲精品日韩专区silk| 可以免费看黄的网站| 亚洲国产精品成人综合色在线| 国产免费怕怕免费视频观看| 亚洲电影中文字幕| 永久在线免费观看| 亚洲hairy多毛pics大全| 亚洲精品无码激情AV| A片在线免费观看| 亚洲人成伊人成综合网久久| 欧美男同gv免费网站观看 | 亚洲AV女人18毛片水真多| 又粗又硬免费毛片| 国产免费一区二区视频| 亚洲国产韩国一区二区| 精品久久久久久久免费加勒比| 亚洲免费黄色网址| 免费吃奶摸下激烈视频| 久久免费美女视频| 亚洲日韩AV一区二区三区中文| 亚洲欧洲日本在线| 最近免费中文在线视频| 特级毛片全部免费播放a一级| 日本免费观看网站|