2013-02-27 3 views
1

Java 코드에서 일부 clojure 함수에 액세스하려고합니다 (Eclipse 및 CounterClockWise를 사용하고 있습니다). 첫째, 어떻게해야할지 모르겠다. 그런데 어떤 대답을 발견했습니다 here.클래스 경로에 Clojure 리소스를 찾을 수 없습니다.

내 Java 코드에서 .clj 파일을 호출 할 때 clojure.lang.RT package을 사용하고 있습니다. 네임 스페이스의 이름을 지정하는 중에 이 test.clojure 패키지의 어딘가에 .clj 파일 인 것처럼 .clj 파일의 규칙이 준수되었습니다. 또한 몇 가지 정보를 따르는 중에 Java 소스 경로 (예 : java-source-path src/test/java)와 소스 경로 (예 : source-path src/test/clojure)를 내 project.clj에 추가했습니다.

그러나 자바 파일을 실행하면 다음 오류가 발생합니다. - a) Could not locate Clojure resource on classpath b) Attempting to call unbound fn.

세부 절차 나 튜토리얼을 통해 커뮤니티에있는 사람이 도움이 될 수 있다면 (clojure.lang.RT 사용) 얻을 수있는 정보는 거의 없기 때문에 (절대적인 초보자라고 가정) 도움이 될 수 있으면 제발 감사드립니다.

내 좌절을 끝내기위한 완전한 답을 기다리고 있습니다.

답변

2

나는 당신이 RT.loadResourceScript을 사용하고있는 것으로 추측합니다. 다음과 같이 시도해보세요.

//Load the namespace 
    RT.var("clojure.core","eval").invoke(RT.var("clojure.core","read-string").invoke("(use 'test.clojure.core)")); 

//Find a function in namespace 
    IFn fn = (IFn)RT.var("test.clojure.core","hello"); 

//Call that function 
    fn.invoke(); 
+0

시도해보십시오. BTW 거기에 대한 적절한 설명서 및/또는 동일한 설명서가 있습니다. – user2108042

+0

안녕하세요 Ankur, 다음 클로이 저 코드를 사용해 보았습니다. ** '(ns test.clojure.core) (defn hello-world [x] (str "Hello"x)) ** 및 Java 코드 : ** "RT.var ("clojure.core ","eval "). invoke (RT.var ("clojure.core ","hello-world "). invoke ("(test.clojure.core 사용) ")); \t \t \t IFn fn = (IFn) RT.var ("test.clojure.core", "hello"); \t \t \t 개체 결과 = fn.invoke(); '** 그리고 지금이 오류가 점점 오전 : ** 언 바운드 FN 전화를 시도 : #'clojure.core/안녕하세요 세계 ** – user2108042

+0

'RT를. invoke (RT.var ("clojure.core", "read-string"). invo ke ("(test.clojure.core 사용)")); IFn fn = (IFn) RT.var ("test.clojure.core", "hello-world"); 개체 결과 = fn.invoke ("test"); ' – Ankur

관련 문제