更新:
我需要把libraryDependencies放在Scala中使用Actor。
libraryDependencies <++= scalaVersion(v =>
Seq("org.scala-lang" % "scala-actors" % v)
)
当我运行“sbt run”时,我可以成功通过编译但是在运行代码时失败了。
这是错误: java.lang.RuntimeException:未检测到主类。
奇怪的是,当我不使用SBT时,我可以毫无问题地运行它:
>scalac actor.scala
>scala pingpong
知道为什么会这样吗?
我使用的是SBT 0.13.0 Scala版本是2.10.2
由于
这是我的代码:
import scala.actors.Actor
import scala.actors.Actor._
case object Ping;
case object Pong;
case object Stop;
class Ping(count:Int, pong:Actor) extends Actor
{
def act()
{
var counter = count -1 ;
pong ! Ping;
loop
{
react
{
case Pong =>
if( (counter < count) && (counter > 0) ) {Console.println(counter+"->Ping: pong"); pong ! Ping; counter = counter -1;}
else {pong ! Stop;exit()}
}
}
}
}
class Pong extends Actor
{
def act()
{
loop
{
react
{
case Ping => {Console.println("Pong: Ping"); sender ! Pong;}
case Stop => {Console.println("Ping Pong Communication is done!");exit()}
}
}
}
}
object pingpong
{
def main(args: Array[String])
{
println(util.Properties.versionString)
val pong = new Pong
val ping = new Ping(5, pong)
ping.start
pong.start
}
}
答案 0 :(得分:3)
在构建文件中尝试此操作:
mainClass in (Compile,run) := Some("pingpong")
答案 1 :(得分:2)
如果我尝试使用class而不是object,我会遇到此异常。
//class Foo extends App {
// print("No main class detected")
//}
object Foo extends App {
print("Hello World")
}
答案 2 :(得分:1)
如果要在Scala中使用Actor,则需要包含库,如下所示:
libraryDependencies <++= scalaVersion(v =>
Seq("org.scala-lang" % "scala-actors" % v)
)
答案 3 :(得分:0)
它正在寻找一个物体。尝试创建一个简单的clock.scala对象文件并重新运行它:
object Clock {
def main(args: Array[String]) = println(new java.util.Date)
}
答案 4 :(得分:0)
您必须移动将App扩展到 src / main / scala 文件夹的类。否则,您必须创建主方法