【问题标题】:scala/Serializable NoClassDefFoundError (RMI w/ Scala)scala/Serializable NoClassDefFoundError (RMI w/ Scala)
【发布时间】:2012-09-24 01:26:59
【问题描述】:

一直在关注 RMI for Java 上的 this tutorial,试图将其转换为 Scala。我使用trait 而不是interface,并且我注释了方法来指示RemoteException 的投掷。

所有东西都实现了,到了compilation step 并完全按照它,除了我用scalac 代替javac

最后在令人兴奋的last step 运行它,我设置了安全策略,启动rmiregistry,去启动我的服务器并得到这个:

java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.NoClassDefFoundError: scala/Serializable

这可能是什么原因造成的?我将他们的命令从java 更改为scala,但其他一切都相同(以用户名和文件路径为模).. 怎么找不到scala/Serializable

潜在相关:

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (rhel-1.49.1.11.4.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

$ scala -version
Scala code runner version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL

更新:将scala.Serializable 替换为java.io.Serializable,一切正常。但是,这是一种解决问题的方法,而不是解决问题。根据 Scala API,scala.Serializable extends java.io.Serializable 所以类路径有些问题......

【问题讨论】:

    标签: java scala rmi noclassdeffounderror serializable


    【解决方案1】:

    Scala 将代码编译为 Java 类,但是当您以任何方式使用标准库时,您还需要在类路径中包含 Scala 运行时库。

    换句话说,您需要在java 调用的-cp 参数中使用/path/to/scala-library.jar

    【讨论】:

    • 我使用 scala 而不是 java 来调用类,但是 Josh Suereth 告诉我做同样的事情,我运行了这个:java -cp "./:~/public_html/src/server/classes/compute.jar:/cs/mutant/adelbert_chang/scala-2.9.2/lib/scala-library.jar" -Djava.rmi.server.codebase=http://cs.ucsb.edu/~adelbert_chang/src/server/classes/compute.jar -Djava.rmi.server.hostname=blackbird.cs.ucsb.edu -Djava.security.policy=server.policy system.ComputerImpl,但同样的问题。 ..
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 2017-12-20
    • 1970-01-01
    • 2011-09-20
    • 2021-11-09
    • 2011-12-08
    • 2011-03-27
    • 2020-08-23
    相关资源
    最近更新 更多