2011-12-06 2 views
3

Eclipse에서 CCW 플러그인을 사용하여 clojure 파일을 REPL에로드하려고합니다. 문제는 내 자신의 자바 클래스 중 하나에 대한 가져 오기 문이 있지만 분명히 그것은 내 클래스 경로에 있지 않습니다.Clojure에서 사용자 정의 Java 클래스 사용 REPL

(ns my-clj-ns 
    (:import [alg.gen Enumerator])) 

Clojure REPL에서 사용/테스트 할 모든 클래스에서 병을 만들어야합니까?

현재 내 clj를 REPL에로드하려고하면 오류가 발생합니다. "Clojure REPL에서 파일로드"가 정상적으로 완료되지 않았습니다. 자세한 내용은 로그를 참조하십시오. java.lang.NullPointerException

모든 도움을 주시면 감사하겠습니다. 당신은 leiningen 사용하면 이러한 컴파일하도록 할 수 있습니다

+0

jar 파일을 만들지 않고 클래스 파일을로드 할 수 있습니다. 도움이 될 수 있습니다 http://stackoverflow.com/questions/7685698/clojure-compilation-and-running-with-cygwin/7686698#7686698 – BLUEPIXY

답변

0

코드가 괜찮습니다.

이클립스 Java 빌드 경로에 문제가 있다고 생각합니다.이 빌드 경로는 응용 프로그램의 클래스 경로에 포함되어있는 항목을 결정합니다.

특히 Java 클래스가 별도의 프로젝트에있는 경우 해당 프로젝트를 빌드 경로 (프로젝트/등록 정보/Java 빌드 경로/프로젝트를 마우스 오른쪽 단추로 클릭)에 추가하거나 jar로 패키징해야합니다.

빌드 요구 사항이 더 정교 해지기 시작하면 Maven부터 시작하여 이러한 유형의 문제를 처리 할 수 ​​있습니다. 메이븐 (Maven)은 처음부터 배우고 설정하는 고통이지만 장기적으로는 지불합니다.

Leiningen

도 사용할 수있는 훌륭한 도구입니다하지만 난 개인적으로 다음과 같은 이유로 사용하지 마십시오 :

  1. 이 명령 행에서 매우 중요하지만, 이클립스 워크 플로우와 매우 잘 통합되지 않습니다
  2. Maven은 더 널리 사용하고 더 나은 자바 세계
1

, 수동

:javac-options {:destdir "classes/"} 
:java-source-path "src/main/java" ; location of Java source 

옵션하거나 컴파일하고 클래스/디렉토리에 클래스 파일을 이동합니다. 항아리를 만들 필요가 없습니다.

1

당신이 CCW의 REPL에있을 때, 당신은 스택 추적을 참조하려면 Alt-E를 칠 수에서 지원됩니다. NullPointerException을 얻는다면 클래스 패스 문제가 아니라고 생각합니다.

0

이렇게하는 법을 배우고 싶다면 정말 좋은 가이드가 있습니다.

https://github.com/technomancy/leiningen/blob/master/doc/MIXED_PROJECTS.md

그러나 요점에서

는 자바 소스 코드에 대한 다음과 같은 프로젝트 정의가 있습니다.

(defproject megacorp/superservice "1.0.0-SNAPSHOT" 
    :description "A Clojure project with a little bit of Java sprinkled here and there" 
    :source-paths  ["src/clojure"] 
    :java-source-paths ["src/java"])