6

この RMI for Java のチュートリアルに従って、Scala に翻訳しようとしています。interfaceを使用する代わりに、traitメソッドに注釈を付けて、 のスローを示しますRemoteException

すべてを実装し、コンパイル手順に進み、正確にそれに従いましjavacscalac

最後にエキサイティングな最後のステップで、それを実行し、セキュリティ ポリシーをセットアップし、rmiregistryを起動し、サーバーを起動して、これでヒットします。

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

何が原因でしょうか? コマンドを から に変更しましたjavascala、他のすべては同じです (ユーザー名とファイル パスのモジュロ) 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.Serializablejava.io.Serializableすべてが機能しました。ただし、これは問題の回避策であり、問​​題の解決にはなりません。Scala APIによるscala.Serializable extends java.io.Serializableと、クラスパスで何かがおかしくなっている...

4

1 に答える 1

2

ScalaはコードをJavaクラスにコンパイルしますが、何らかの方法で標準ライブラリを使用している場合は、クラスパスにScalaランタイムライブラリも含める必要があります。

言い換えれば、あなたはあなたの呼び出しの議論に必要/path/to/scala-library.jarになるでしょう。-cpjava

于 2012-10-03T10:05:28.730 に答える