【发布时间】:2010-01-11 23:16:15
【问题描述】:
我正在尝试使用 clojure 为某些供应商实现“插件” 提供的软件。
这里是供应商提供的软件的一些背景知识。它 期望我实现一个特定的接口,然后把 jar 包含该实现的文件到其服务器上的目录中。 然后当客户运行软件时,我实现的类被“发送” 通过RMI从服务器到客户端,然后我的实现 该接口在客户端上运行。客户端没有我的 jar 文件 (或 clojure jar 文件)在它的类路径中。只有服务器有 那些jar文件。 RMI 似乎足够聪明,可以上传任何内容 依赖是必要的。
我已经成功地在 clojure 中构建了一个非常简单的实现,并且 它似乎工作。问题是,我希望能够更新我的 即时在客户端上实现。我在其中嵌入了一个 repl-server 我的班级和我可以成功连接到它。为了清楚起见, repl-server 正在客户端上运行,我能够连接到 repl 得到提示“clojure.core=>”。但是,repl似乎是 相当残废。如果我输入 (+ 1 1) 我会收到以下错误: “java.lang.ClassNotFoundException:clojure.lang.Numbers”。如果输入 (str "kent") 我得到 "java.lang.NoClassDefFoundError: clojure/lang/ AFunction”。我输入的大多数东西都会产生类似的东西。我可以 但是做一个简单的定义,例如 (def x 3) 并且 x 确实如此定义 REPL 似乎在某种意义上正在运行。
这似乎是一个类路径问题,但我不确定为什么我的 “编译”代码,在客户端上运行不会有类路径 在同一客户端上运行的 repl 找不到核心时出现问题 类。
有什么想法吗?
谢谢。 肯特。
【问题讨论】: