SBT错误:java.lang.RuntimeException:未检测到主类

时间:2013-12-26 03:49:47

标签: scala build sbt

更新:
我需要把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

由于

Deryk。

这是我的代码:

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
    }
}

5 个答案:

答案 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 文件夹的类。否则,您必须创建方法