2010-06-24 13 views
7

में जावा क्लासेस आयात करना मुझे कुछ गलत लगता है। मैं Git से clojure का निर्माण किया है, और यह इस प्रकार लागू कर रहा हूँ:क्लोजर

java -cp clojure.jar clojure.main 

मैं repl मिलता है, और फिर मैं टाइप करें:

(import 'java.lang.string) 

और मैं:

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

मैं मैं lang.string के साथ यह कोशिश कर रहा हूं क्योंकि मुझे लगता है कि इसे कहीं कक्षा में मौजूद होना है। मैंने अन्य पुस्तकालयों की कोशिश की है, बिना किसी किस्मत के। मैं क्या गलत कर रहा हूं?

उत्तर

14

String पूंजीकृत होना चाहिए, बस इतना ही है।

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

लेकिन java.lang में सब कुछ पहले से ही डिफ़ॉल्ट रूप से आयातित और उपलब्ध है, तो आप ऐसा करने की जरूरत नहीं होनी चाहिए है।

2

ब्लेह, मुझे लगता है कि मैंने इसे पाया। सबसे पहले वाक्यविन्यास होना चाहिए:

(import java.lang.String) 

यह भी ध्यान दें कि यह स्ट्रिंग स्ट्रिंग नहीं है।

+1

सं बोली आयात के लिए आवश्यक है। ब्रायन का जवाब देखें। लेकिन एनएस खंडों के लिए नहीं। Bozhidar का जवाब देखें। – kotarak

+0

असल में आयात के लिए उद्धरण की आवश्यकता नहीं है। कम से कम क्लोजर 1.1 में, जिसका उपयोग मैं कर रहा हूं ... –

8

गैर प्रतिकृति अभ्यास में बीटीडब्ल्यू जावा कक्षाओं को शामिल करने का सबसे अच्छा तरीका शायद 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)))