2014-09-19 8 views
1

다음은 시나리오입니다. Java 솔루션이 필요한 클래스의 프로젝트에서 작업 중입니다. 특히 키 함수가 AI 문제를 받고 응답 문자열을 반환합니다. 내 의도 된 접근 방식은 문제를 받아서 그것을 해결하는 Clojure 함수에 보내고 솔루션 문자열을 핵심 함수에 반환하고 차례대로 반환합니다.동시 Java + Clojure 개발 : Leiningen이없는 사이다?

제 질문은 작업 흐름 중 하나입니다. 열렬한 emacs 사용자 (Clojure는 처음이지만) 나는 Cider 사용의 이점을 얻고 싶습니다. 그러나이 프로젝트의 Clojure와 Java 부분 모두 개발 중이므로 Leiningen에서 새 프로젝트를 시작하는 것이 실현 가능하거나 필요하지 않은 것으로 보입니다. 현재 Java에 AI 문제를 호출 할 때 Clojure에 전달하는 클래스를 작성한 다음 명령 줄 (비 사이다)에서 REPL을 실행하고 작업하여 .clj의 진행을 저장합니다. . AI 솔버가 이런 방식으로 작동하게되면, 커스텀 문제 딜러 클래스 (최종 제출에서는 유효하지 않음)에서 벗어나 주요 자바 함수의 문제를 기본 Clojure 함수로 전달하고 응답을 얻는다. String back . 내가 어떻게 접근 할 수 myClojureFile (JAR 또는 다른 Java-호출 형식) 그래서

: 내 최종 제출 파일도을 포함 할 수 KeyFunction.java

:

내 최종 제출 파일은을 포함해야한다 이것은 "Project"가 실제로 Java에있을 때 Cider (항상 Leiningen 프로젝트를 포함하는 지침이있는)의 이점을 얻는 동안 최종 제출이라는 측면에서?

답변

0

clojure.tools.nrepl에서 제공되는 nrepl 서버를 실행하고 cider을 통해 연결할 수 있습니다. 또한 cider 버전이 필요로하는 nrepl 미들웨어를 사용해야합니다. lein을 사용하지 않으므로 maven을 통해 종속성을 구성하거나 해당 종속성 (모든 cider 버전에서 예상되는 미들웨어)을 로컬에 설치해야합니다.

그러나 더 나은 해결책은이 설정을 단순화하는 leiningen을 사용하는 것입니다.

leinengen 프로젝트에는 Clojure와 Java 코드가 모두 포함될 수 있습니다. tutorial에서 언급했듯이 lein은 Java 코드를 컴파일 한 다음 Clojure 코드를 컴파일합니다.

당신은 자바는 컴파일 할 경우 :에 나와있는 자바 소스 경로 나 Clojure의 네임 스페이스 : Leiningen 다른 코드를 실행하기 전에 AOT, 그들은 항상 등을 호출 어떤 실행, repl을 통해, 컴파일됩니다 .

+0

그래서 내 고객이 내 물건을 연결하는 Java 프로그램을 갖게 될 것이므로 위에서 언급 한 내용 (그리고 내가 언급 한 내용)을 돌려 줄 것입니다.이 방법으로 어떻게 모양을 만들 것인가? 언급 했어? 나는 결국 그것을 .java와 .jar로 어떻게 끓일 것인가? – WorldsEndless

+0

'lein uberjar' 또는'lein jar' 명령은 .clj 또는 .java 파일, 정의한 모든 자원, 컴파일 된 .class 파일 및 (필요한 경우 모든) 제 3 자 jar 파일을 포함하는 jar 파일을 생성합니다. – noisesmith