【发布时间】:2015-02-14 08:02:34
【问题描述】:
我一直在关注这个关于使用 clojure 的分布式 RMI 的教程,但它似乎已经过时了,我无法让它工作:
http://nakkaya.com/2009/12/05/distributed-clojure-using-rmi/
当我严格按照教程操作时,我得到了 java.lang.ClassNotFoundException: stub.sayName,所以我尝试使用 reify 代替代理,但错误仍然存在。
目前我的代码如下:
对于接口: 包存根;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface sayName extends Remote {
String Name() throws RemoteException;
}
对于我的主要 clojure 类:
(ns immutability.core
(:gen-class))
(defn -main
[& args]
(println "Hello, World!"))
(def rmi-registry
(java.rmi.registry.LocateRegistry/createRegistry 1099))
(defn name-server []
(reify stub.sayName Name
(Name [personname] "Hello, " + personname)))
(defn register-server []
(.bind
(java.rmi.registry.LocateRegistry/getRegistry)
"Hello"
(java.rmi.server.UnicastRemote/exportObject
(name-server) 0)))
(register-server)
我敢肯定这是一件小事又小事,但我能弄明白
【问题讨论】:
-
您将“存根”文件夹放在类路径的哪个位置?
-
自reddit.com/r/Clojure/comments/2vnhvg/…以来问题已得到修复
标签: java interface clojure interop