在Clojure中导入Java类

Tim*_*dge 7 clojure

我似乎做错了什么.我已经从git构建了clojure,并因此调用它:

java -cp clojure.jar clojure.main
Run Code Online (Sandbox Code Playgroud)

我得到了repl,然后我输入:

(import 'java.lang.string)
Run Code Online (Sandbox Code Playgroud)

我得到:

java.lang.ClassNotFoundException: java.lang.string (NO_SOURCE_FILE:1)
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用lang.string,因为我认为它必须存在于某个类路径上.我尝试过其他图书馆,都没有多少运气.我究竟做错了什么?

Bri*_*per 14

String 应该大写,就是这样.

user> (import 'java.lang.String)
java.lang.String
Run Code Online (Sandbox Code Playgroud)

但是所有java.lang内容都已导入并且默认可用,因此您不需要这样做.


Boz*_*sov 8

在非repl练习中,可能包含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))) 
Run Code Online (Sandbox Code Playgroud)