2010-06-24 3 views
7

뭔가 잘못하고있는 것처럼 보입니다. 나는 자식에서 Clojure의를 구축했습니다, 따라서 그것을 호출 오전 :Clojure에서 Java 클래스 가져 오기

java -cp clojure.jar clojure.main 

나는 REPL을 얻는다면, 나는 입력 :

(import 'java.lang.string) 

내가 얻을 :

java.lang.ClassNotFoundException: java.lang.string (NO_SOURCE_FILE:1) 

I을 나는 그것이 클래스 패스에 어딘가에 존재해야한다고 생각하기 때문에 lang.string으로 이것을 시도한다. 나는 다른 라이브러리를 사용해 보았습니다.별로 운이 없었습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

14

String은 대문자로 입력해야합니다. 이 작업을 수행 할 필요가 없습니다 있도록

user> (import 'java.lang.String) 
java.lang.String 

그러나 모든 java.lang에서 이미 기본적으로 가져 와서 사용할 수 있습니다.

2

블레, 찾은 것 같습니다. 먼저 구문은 다음과 같아야합니다.

(import java.lang.String) 

또한 문자열이 아닌 문자열입니다.

+1

번호 견적은 가져 오기를 위해 필요합니다. Brian의 답변을 참조하십시오. 하지만 ns 절에는 해당되지 않습니다. Bozhidar의 대답을 참조하십시오. – kotarak

+0

실제로 가져 오기에는 따옴표가 필요하지 않습니다. 최소한 clojure 1.1에서, 내가 사용하고있는 것은 ... –

8

비 repl 연습에서 Btw는 아마도 Java 클래스를 포함하는 가장 좋은 방법은 ns 매크로입니다.

(ns foo.bar 
    (:refer-clojure :exclude [ancestors printf]) 
    (:require (clojure.contrib sql sql.tests)) 
    (:use (my.lib this that)) 
    (:import (java.util Date Timer Random) 
      (java.sql Connection Statement)))