2011-04-15 75 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