2010-06-24 9 views
7

Parece que estoy haciendo algo mal. He construido clojure de Git, y estoy invocando así:Importación de clases de Java en Clojure

java -cp clojure.jar clojure.main 

recibo de la réplica, y luego escribo:

(import 'java.lang.string) 

y me sale:

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

I Estoy intentando esto con lang.string ya que supongo que debe existir en algún lugar de la ruta de clases. He probado otras bibliotecas, todas sin mucha suerte. ¿Qué estoy haciendo mal?

Respuesta

14

String debe estar en mayúscula, eso es todo.

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

Pero todo en java.lang ya es importado y está disponible de forma predeterminada, por lo que no es necesario hacer esto.

2

Bleh, creo que lo encontré. En primer lugar, la sintaxis debe ser:

(import java.lang.String) 

También tenga en cuenta que String no es una cadena.

+1

No. La cita es necesaria para la importación. Vea la respuesta de Brian. Pero no para las cláusulas ns. Ver la respuesta de Bozhidar. – kotarak

+0

En realidad, la cotización no es necesaria para la importación también. Al menos en clojure 1.1, que estoy usando ... –

8

Btw en ejercicios de no repl, probablemente la mejor manera de incluir clases de Java es la 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))) 
Cuestiones relacionadas