我有一个场景,我有一些需要相互引用的对象。我可以编译它的唯一方法是使用惰性
class A(b:B)
class B(a:A)
lazy val a:A = new A(b)
lazy val b:B = new B(a)
我可以使用一些演员做同样的事情,并让它编译
abstract class Message
case class Message1 extends Message
case class Message2 extends Message
class Actor1(otherActor:Actor) extends Actor {
def act() {
loop {
react {
case Message1 =>
println("received message1")
otherActor ! Message2
case _ =>
}
}
}
}
class Actor2(otherActor:Actor) extends Actor {
def act() {
loop {
react {
case Message2 =>
println("received message2")
otherActor ! Message1
case _ =>
}
}
}
}
lazy val actor1:Actor = new Actor1(actor2)
lazy val actor2:Actor = new Actor2(actor1)
但是,当我添加以下内容时:
actor1.start
actor2.start
actor1 ! Message1
我收到以下错误:
线程“main”中的异常 java.lang.NoClassDefFoundError: com/fictitiousCompany/stackOverflowQuestion/Test 原因:java.lang.ClassNotFoundException: com.fictitiousCompany.stackOverflowQuestion.Test at java.net.URLClassLoader$1.run(URLClassLoader.java:202 ) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 sun.misc.Launcher$ AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
我正在使用 Scala Eclipse 插件 2.8.1。