我一直在学习Java的RMI教程this tutorial,现在想将其翻译成Scala。我使用
我已经实现了所有内容,并按照compilation step中的说明进行操作,只是用
最后到了令人兴奋的last step,运行它,我设置了安全策略,启动了
这是什么原因呢?我将命令从
可能相关的信息:
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
,所以类路径出现了问题...
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
,但是出现了相同的问题... - adelbertc