2010-06-24 33 views
7

Tôi dường như đang làm điều gì sai. Tôi đã xây dựng clojure từ git, và đang gọi nó như vậy:Nhập các Lớp Java trong Clojure

java -cp clojure.jar clojure.main 

tôi nhận được repl, và sau đó tôi gõ:

(import 'java.lang.string) 

và tôi nhận được:

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

tôi đang thử điều này với lang.string vì tôi cho rằng nó phải tồn tại trên classpath ở đâu đó. Tôi đã thử các thư viện khác, tất cả đều không có nhiều may mắn. Tôi đang làm gì sai?

Trả lời

14

String nên được viết hoa, đó là tất cả.

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

Nhưng mọi thứ trong java.lang đã được nhập và có sẵn theo mặc định, vì vậy bạn không cần phải làm điều này.

2

Bleh, tôi nghĩ mình đã tìm thấy nó. Trước hết cú pháp phải là:

(import java.lang.String) 

Cũng lưu ý rằng chuỗi không phải là chuỗi.

+1

No. Trích dẫn cần thiết để nhập. Xem câu trả lời của Brian. Nhưng không phải cho mệnh đề ns. Xem câu trả lời của Bozhidar. – kotarak

+0

Trên thực tế, báo giá cũng không cần thiết cho việc nhập khẩu. Ít nhất trong clojure 1.1, tôi đang sử dụng ... –

8

Btw trong bài tập không thay thế có lẽ cách tốt nhất để đưa vào các lớp Java là macro 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))) 
Các vấn đề liên quan