मुझे थोड़ा मूर्खतापूर्ण महसूस हो रहा है, लेकिन मुझे संकलन करने के लिए क्लोजर हैलो वर्ल्ड नहीं मिल सकता है।क्लोजर संकलन?
निर्देशिका संरचना:
hello-world/
clojure-1.1.0.jar
build/
classes/
src/
test/
hello.clj
hello.clj:
(ns test.hello
(:gen-class))
(defn -main [& args]
(println "Hello" (nth args 0)))
इंटरेक्शन:
$ cd hello-world
[hello-world]$ java -cp ./clojure-1.1.0.jar:./build/classes:./src clojure.main
Clojure 1.1.0
user=> (require 'test.hello)
nil
user=> (test.hello/-main "there")
Hello there
nil
user=> (compile 'test.hello)
java.io.IOException: No such file or directory (hello.clj:2)
user=> *compile-path*
"classes"
user=> (doseq [p (.split (System/getProperty "java.class.path") ":")] (println p))
./clojure-1.1.0.jar
./build/classes
./src
nil
तो मैं लोड और आरईपीएल से फ़ाइल कॉल कर सकते हैं, लेकिन यह 'नहीं करता है टी संकलन।
clojure.org के अनुसार, संकलन की जरूरत है
- नाम स्थान classpath-रिश्तेदार फ़ाइल पथ से मेल खाना चाहिए - जाँच
- * संकलन पथ * classpath पर होना चाहिए -
- जाँच: जनरल श्रेणी के तर्क को एनएस फॉर्म -
मुझे this post from a year back मिला, जहां तक मैं कह सकता हूं कि मैं बिल्कुल वही कर रहा हूं, लेकिन यह काम नहीं करता है।
मुझे क्या याद आ रही है?
सिस्टम: ओएस एक्स 10.6, जावा 1.6.0, Clojure 1.1
ऐसा लगता है कि मैं अपना खुद का जवाब स्वीकार नहीं कर सकता, इसलिए मुझे प्रश्न तब तक खुलना होगा जब तक कोई और झटके न दे। –
यह भी ध्यान देने योग्य है कि आप शायद ही कभी AOT संकलन क्लोजर कोड की आवश्यकता है। क्लोजर कोड संकलित किए बिना ठीक चलाएगा, और यही वह तरीका है जिसे आपको इसे चलाना चाहिए। कुछ विशिष्ट क्लोजर जावा इंटरऑप विशेषताएं वास्तव में * आवश्यक * है कि आपका कोड एओटी संकलित हो, लेकिन यदि आप उन सुविधाओं का उपयोग नहीं कर रहे हैं, तो अपने कोड को संकलित करने से परेशान न करें। यदि आप एक निष्पादन योग्य जार चाहते हैं, तो आप केवल एओटी को एप्लिकेशन चलाने के लिए केवल एक-मुख्य फ़ंक्शन के साथ एक मुख्य फ़ाइल संकलित कर सकते हैं। हालांकि, http://www.assembla.com/spaces/clojure/tickets/315-add-support-for-running--main-namespace-from-clojure-main-without-aot – Rayne