2011-04-15 76 views
2

我目前在Android測試遠程演員。我已經完成了一個有兩個類的小程序:第一個實現主要活動,第二個實現一個actor。遠程演員並不在Android上運行 - >堆棧溢出

當我創建我的演員,節目被殺害此消息:在調用Ljava /朗/拋出... 出於某種原因堆棧溢出,程序的堆棧似乎太小(或有我的第二類的第3行的執行過程中的某種錯誤 )的(如下所示)。

這是我第二類的代碼:

class Person(ip : String, port : Int) extends Actor{ 
     val node = Node(ip, port) 
     var server = select(node, 'myName) // <'----- program crashes here 
     def act(){ 
       while(true){ 
         receive { 
           case Post(msg) => //do something 
           case Stop => exit() 
         } 
       } 
     } 
} 

是否anyboy知道這個錯誤或解決任何想法或對運行在Android上的遠程參與者的經驗嗎?

感謝

回答

3

我發現這個問題!我查看了遠程參與者的來源,並且「TcpService」中的函數「generatePort」包含遞歸調用以找到一個空閒套接字端口。 Android沒有給出端口,因爲... AndroidManifest.xml必須包含使用套接字的INTERNET權限。

我希望這個主題能幫助某人

1

出現了一些問題,機器人會堆棧限制。例如調度JSON庫已被公知(http://dispatch.databinder.net/Lift-JSON)吹堆,因爲它的使用解析器組合的。

看看這個帖子http://groups.google.com/group/android-developers/browse_thread/thread/d880c3d5777127d9。第二個帖子介紹如何通過此構造函數創建一個更大的堆棧線程:http://developer.android.com/reference/java/lang/Thread.html#Thread%28java.lang.ThreadGroup,%20java.lang.Runnable,%20java.lang.String,%20long%29

+0

如果我在創建線程時指定了堆棧大小,程序也會崩潰。如果我放大堆棧大小,程序在崩潰之前需要更長的時間。它看起來像一個遞歸問題...我沒有找到解決方案 – reevolt 2011-04-15 17:53:42