Java akka.remote.RemoteActorRefProvider上的ClassNotFoundException

Java akka.remote.RemoteActorRefProvider上的ClassNotFoundException,java,eclipse,scala,Java,Eclipse,Scala,我正在尝试使用Akka actors在scala中的远程参与者之间进行通信。我的程序在scala IDE中运行良好,但无法在命令提示符下运行。在我的项目文件夹中,有application.conf文件、scala文件和akka-remote_2.10-2.2.2.jar文件。我编译我的程序如下 scalac -cp akka-remote_2.10-2.2.2.jar FileName.scala scala FileName 程序编译后,我按如下方式运行它 scalac -cp akka-

我正在尝试使用Akka actors在scala中的远程参与者之间进行通信。我的程序在scala IDE中运行良好,但无法在命令提示符下运行。在我的项目文件夹中,有application.conf文件、scala文件和akka-remote_2.10-2.2.2.jar文件。我编译我的程序如下

scalac -cp akka-remote_2.10-2.2.2.jar FileName.scala
scala FileName
程序编译后,我按如下方式运行它

scalac -cp akka-remote_2.10-2.2.2.jar FileName.scala
scala FileName
我得到以下错误

java.lang.ClassNotFoundException: akka.remote.RemoteActorRefProvider
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(Dynam
icAccess.scala:68)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(Dynam
icAccess.scala:67)
    at scala.util.Try$.apply(Try.scala:161)
    at akka.actor.ReflectiveDynamicAccess.getClassFor(DynamicAccess.scala:67
)
    at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.sc
ala:85)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:546)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:111)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:93)
    at Project1Bonus2$.main(Project1Bonus2.scala:11)
    at Project1Bonus2.main(Project1Bonus2.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClass
Loader.scala:71)
    at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoade
r.scala:31)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaC
lassLoader.scala:139)
    at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scal
a:71)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLo
ader.scala:139)
    at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
    at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
    at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)

    at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
    at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala
:74)
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)

    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
任何帮助都将不胜感激


谢谢

这里的问题是Scala发行版默认在其引导类路径中包含akka actor 2.X.X。因此,scalac和scala在代码中使用的是不同的

解决方法是使用java而不是scala来启动应用程序。您只需在类路径中包含正确的Scala JAR(Scala库和Scala编译器)

java -cp akka-remote_2.10-2.2.2.jar FileName.scala
将会有许多jar依赖项,例如akka actor等

因此,使用SBT或将所有JAR放在一个文件夹中,然后将该文件夹添加到类路径中

java -cp ./jars/*:. FileName.scala

另外,使用scala-cp-akka-remote_2.10-2.2.2.jar文件名运行程序也会产生相同的异常。请发布scala-cp-akka-remote_2.10-2.2.jar的完整异常。您是否将
akka-remote_2.10-2.2.jar
添加到类路径?@1esha它会产生与上面相同的异常。.我在运行Spark时看到了相同的错误(使用akka)有几篇关于它的帖子,包括这篇,没有一篇显示它已经解决了。