일부 공급 업체 제공된 소프트웨어에 "플러그인"을 구현하기 위해 clojure를 사용하려고합니다.clojure rmi classpath problem
다음은 공급 업체가 제공하는 소프트웨어에 대한 배경 지식입니다. 그것은 특정 인터페이스를 구현 한 다음 해당 구현을 포함하는 파일 을 서버의 디렉토리에 넣으려고합니다. 그런 다음 클라이언트가 소프트웨어를 실행하면 구현 된 클래스가 RMI를 통해 서버에 클라이언트에 "전송"되고 내 구현이 인 클라이언트에서 실행됩니다. 클라이언트에 내 jar 파일 (또는 clojure jar 파일)이 classpath에 없습니다. 서버에만 의 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/ AF 기능"이 표시됩니다. 내가 입력하는 대부분의 것들은 비슷한 것을 만들어 낸다. 나는 일 수 있지만 (def x 3)와 같은 간단한 def를 수행하면 x가 정의됩니다. REPL은 어떤 의미에서 실행되는 것처럼 보입니다. 이 클래스 경로에 문제가있을 수 있습니다처럼
보인다,하지만 REPL 동안 클라이언트에서 실행 내 "컴파일"코드가 클래스 경로 문제가 발생하지 왜 나는 캔트 찾을 같은 클라이언트에서 실행, 확실하지 않다 코어 클래스.
아이디어가 있으십니까?
감사합니다. 켄트.