I am getting a strange error with sbt run for a Spray example app I wrote, it compiles fine, and I only get the error on my personal computer because it works fine on another computer.
Here's what I think is the relevant source, it's the template code from Spray sample code but I don't think it's the cause.
package spray.examples
import akka.actor.{ActorSystem, Props}
import akka.io.IO
import spray.can.Http
object Boot extends App {
implicit val system = ActorSystem()
// the handler actor replies to incoming HttpRequests
val handler = system.actorOf(Props[DemoServiceActor], name = "handler")
IO(Http) ! Http.Bind(handler, interface = "localhost", port = 8080)
}
Here's the stack trace
Uncaught error from thread [default-akka.actor.default-dispatcher-3] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[default]
java.lang.VerifyError: (class: spray/can/server/HttpListener, method: <init> signature: (Lakka/actor/ActorRef;Lspray/can/Http$Bind;Lspray/can/HttpExt$Settings;)V) Incompatible argument to function
at spray.can.HttpManager$$anonfun$receive$1$$anonfun$applyOrElse$1.apply(HttpManager.scala:65)
at spray.can.HttpManager$$anonfun$receive$1$$anonfun$applyOrElse$1.apply(HttpManager.scala:65)
at akka.actor.CreatorFunctionConsumer.produce(Props.scala:369)
at akka.actor.Props.newActor(Props.scala:323)
at akka.actor.ActorCell.newActor(ActorCell.scala:534)
at akka.actor.ActorCell.create(ActorCell.scala:560)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:425)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:447)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:262)
at akka.dispatch.Mailbox.run(Mailbox.scala:218)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
As indicated in the comments, this is likely a classpath issue but I don't know how to debug that. Coincidentally, or not, this happened after I upgraded from stock Mac OS X Java 6 to Java 7, I have Java 7 on both machines. Any insights will be much appreciated.
In case this might help, here's the classpath dump from sbt console, it's the same for compile and runtime
List(Attributed(/Users/bob/projects/spray-file-upload/target/scala-2.10/classes),
Attributed(/Users/bob/.sbt/0.12.4/boot/scala-2.10.2/lib/scala-library.jar),
Attributed(/Users/bob/.ivy2/cache/com.typesafe.akka/akka-actor_2.10/jars/akka-actor_2.10-
2.2.0.jar), Attributed(/Users/bob/.ivy2/cache/com.typesafe/config/bundles/config-1.0.2.jar),
Attributed(/Users/bob/.ivy2/cache/io.spray/spray-json_2.10/jars/spray-json_2.10-1.2.5.jar),
Attributed(/Users/bob/.ivy2/cache/org.parboiled/parboiled-scala_2.10/bundles/parboiled-
scala_2.10-1.1.5.jar), Attributed(/Users/bob/.ivy2/cache/org.parboiled/parboiled-
core/bundles/parboiled-core-1.1.5.jar), Attributed(/Users/bob/.ivy2/cache/io.spray/spray-
can/jars/spray-can-1.2-M8.jar), Attributed(/Users/bob/.ivy2/cache/io.spray/spray-
io/jars/spray-io-1.2-M8.jar), Attributed(/Users/bob/.ivy2/cache/io.spray/spray-
util/jars/spray-util-1.2-M8.jar), Attributed(/Users/bob/.ivy2/cache/io.spray/spray-
http/jars/spray-http-1.2-M8.jar), Attributed(/Users/bob/.ivy2/cache/io.spray/spray-
httpx/jars/spray-httpx-1.2-M8.jar),
Attributed(/Users/bob/.ivy2/cache/org.jvnet.mimepull/mimepull/jars/mimepull-1.9.2.jar),
Attributed(/Users/bob/.ivy2/cache/io.spray/spray-routing/jars/spray-routing-1.2-M8.jar),
Attributed(/Users/bob/.ivy2/cache/com.chuusai/shapeless_2.10/jars/shapeless_2.10-1.2.4.jar))
If anyone cares to try a fresh compile with Java 7 and then sbt run, feel free to grab it from the repo.
Unfortunately, 1.2-M8 is not compatible with Akka 2.2.0 final. Either use Akka 2.2.0-RC1 or upgrade to a more recent nightly build of spray 1.2.
UPDATE: Also, by now the final version has been released, so you can use version 1.2.0 with the latest Akka 2.2.3.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With