资源描述
修改前(壞掉)
修改後(正常)
1. infocom2006(完整版/切割版) 在 BubbleRap中無法正常執行,跑一個小時後,會在Connection Up => … => CWindowCentrality的getGlobalCentrality中發生NullPointerException程式錯誤,如下
原因在於:原本的CWindowCentrality的getGlobalCentrality中沒有做例外處理,修改後即可.
2. Infocom2006 在 BubbleRap中會造成NullPointerException問題
(此為BubbleRap本身設計造成的bug,而修正此bug後的ONE版本都會標記”修正版”)
原因: 當buffersize設3M messagesize設25k 代表messages只能存120個msg
當7649秒從messages刪除Y4之後,Y4還存在於ActiveRouter的outgoing messages內
因為在update時tryMessagesForConnected從頭到尾都使用outgoing messages取m跟con,
並不會發現messages中已經刪除Y4了
直到transferDone時才去messages找Y4,已經早就被刪除了,而造成NULL
(詳細說明可參考20140310投影片)
解決方法: DecisionEngineRouter (上圖)修改前 (下圖)修改後
在tryMessagesForConnected前先檢查Messages內的msg在不在,則可避免nullpointer問題
3. 不管TTL多少,跑出來的cost和delivery ratio都一樣
解決方法: 在DecisionEngineRouter的createNewMessage中加入m.setTtl(this.msgTtl);
4. Eclipse執行BubbleRap時遇到:
解決方法:Run Configuration的Arguments要加入bubble.txt
5.
將以下幾個資料夾和檔案放到javaproject/src資料夾,就可以用run.bat去執行compiler跟one執行小黑窗版,然後用Eclipse瀏覽code,但可能小黑窗compiler過,改變了classpath之類的,就會導致Eclipse無法跑這份程式了,只能用Eclipse瀏覽code,還算方便(按住ctrl移到object或method上可以自動進入該class)
結論:用小黑窗跑程式,用eclipse看code
展开阅读全文