2011-01-29 25 views
15

Cố gắng nhập một lớp bên ngoài thư viện java mà không có kết quả. Tôi đang chạy ngược chiều kim đồng hồ trên Eclipse Helios. Vùng commons-land-2.6.jar nằm trong đường chạy. Tôi mới đến Clojure và không thể hình dung ra điều này. Tất cả giúp đỡ rất nhiều đánh giá cao!Nhập các lớp Java vào Clojure

Đương nhiên này hoạt động tốt:

1:7 exp2=> (import '(java.io FileReader)) 

> java.io.FileReader

nhưng điều này không:

1:6 exp2=> (import '(org.apache.commons.lang.StringUtils)) 

> nil

Đây là mục tiêu cuối cùng:

1:10 exp2 => (defn khoảng trắng? [Nhân vật])

> java.lang.Exception (StringUtils (isEmpty ký tự).): Không thể giải quyết biểu tượng: StringUtils trong bối cảnh này (repl-1: 10)

Trả lời

23

Bạn thực hiện một lỗi - bạn đã không đặt khoảng trống giữa lớp org.apache.commons.lang và StringUtils. Đây là hình thức nhập khẩu cho phép bạn nhập một số lớp học từ một gói, ví dụ:

(import '(org.apache.commons.lang StringUtils SystemUtils)) 

nếu bạn muốn nhập khẩu chỉ có một lớp, sau đó bạn có thể sử dụng phiên bản không có dấu ngoặc:

(import 'org.apache.commons.lang.StringUtils) 

Và bởi vì chức năng trong StringUtils là tĩnh, bạn cần phải sử dụng đoạn mã sau:

(StringUtils/isEmpty character) 

để gọi chức năng của họ

Các vấn đề liên quan