Groovy 如何使Gpars参与者从控制台读取

Groovy 如何使Gpars参与者从控制台读取,groovy,actor,gpars,Groovy,Actor,Gpars,我有一个简单的GPAR演员: class ConsoleActor extends DefaultActor { protected void act() { loop { react { Msg msg -> switch (msg.type) { case MsgType.Read: sender.send(Syste

我有一个简单的GPAR演员:

class ConsoleActor extends DefaultActor {

    protected void act() {
        loop {
            react { Msg msg ->
                switch (msg.type) {
                    case MsgType.Read:
                        sender.send(System.console().readLine())
                        break
                }
            }
        }
    }
}
但当我试图发送一条消息来强制演员从控制台阅读时,我得到一个NPE:

参与者线程3中发生异常 java.lang.NullPointerException:无法在上调用方法readLine() 空对象

为什么会发生这种情况,以及如何在GPars Actor中从控制台读取数据?

我在这里找到了答案:

这对我很有用。

我在这里找到了答案:


这对我很有用。

我认为你不应该从控制台上读演员的作品。。。另外,如果您在一个无头环境中,
System.console()
将返回null。我认为您不应该从控制台读取参与者的内容。。。此外,如果您处于无头环境中,
System.console()
将返回null
class ConsoleActor extends DefaultActor {

    protected void act() {
        loop {
            react { Msg msg ->
                switch (msg.type) {
                    case MsgType.Read:
                        Scanner input = new Scanner(System.in);
                        String str = input.nextLine();
                        sender.send(str)
                        break
                }
            }
        }
    }
}