2012-10-03 66 views
1

關注RMI for Java的this tutorial,試圖將其轉換爲Scala。而不是interface我使用trait,我註釋的方法來表明投擲RemoteExceptionscala/Serializable NoClassDefFoundError(RMI w/Scala)

得到了一切執行,並得到了compilation step並嚴格遵循,除了代替javac我使用scalac

在激昂 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 

UPDATE:替換scala.Serializablejava.io.Serializable和一切工作。但是,這是解決問題的一項工作,反對解決問題。根據斯卡拉API,scala.Serializable extends java.io.Serializable所以隨着類路徑的東西越來越模糊......

回答

1

Scala將代碼編譯爲Java類,但是當您以任何方式使用標準庫時,還需要包含Scala運行時庫在你的類路徑中。

換句話說,您需要在您的java調用的-cp參數中使用/path/to/scala-library.jar

+0

我曾經用'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