मैं क्लोजर स्रोत को क्लास फाइल में संकलित करने की कोशिश कर रहा हूं, और इसे केवल कमांड लाइन, नो लेइन और न ही (संभवतः उत्तर) का उपयोग करके चला सकता हूं।
मेरे पास core.clj है src/hello
निर्देशिका।
.
└── src
└── hello
└── core.clj
यह स्रोत कोड है।
(ns hello.core)
(defn -main
"This should be pretty simple."
[]
(println "Hello, World!"))
का उपयोग करते हुए (compile)
REPL में।
इस साइट में संकेत से (http://clojure.org/compilation), मैंने REPL से क्लास फ़ाइल प्राप्त करने की कोशिश की।
मैंने आरईपीएल के साथ शुरुआत की lein repl
src निर्देशिका में, फिर एक त्रुटि पाने के लिए संकलन करने का प्रयास किया।
user=> (compile "hello.core)
CompilerException java.io.IOException: No such file or directory, compiling:(hello/core.clj:1:1)
कमांड लाइन
इस पोस्ट से Clojure .clj को .class / तथा क्लोजर में फाइल कैसे संकलित करें, ऐसा लगता है कि मैं REPL के बाहर क्लोजर स्रोत को संकलित कर सकता हूं।
मैंने इसमें कोशिश की .
एक त्रुटि पाने के लिए।
> java -cp .:<PATH>/clojure-1.6.0.jar -Dclojure.compile.path=build clojure.lang.Compile src/hello/core.clj
Compiling src/hello/core.clj to build
Exception in thread "main" java.io.FileNotFoundException: Could not locate
hello/core/clj__init.class or hello/core/clj.clj on classpath:
at clojure.lang.RT.load(RT.java:443)
at clojure.lang.RT.load(RT.java:411)
...
तो, यहां मेरे प्रश्न हैं:
- मैं आरईपीएल के साथ / बिना वर्ग को प्राप्त करने के लिए क्लोजर स्रोत कैसे संकलित कर सकता हूं?
- जावा के साथ कक्षा कैसे चलाएं? क्या यह निष्पादित करने के लिए पर्याप्त है
java -cp .:CLOJURE_JAR main
?
उत्तर:
जवाब के लिए 2 № 1आरईपीएल
REPL का आह्वान करते समय, आपको वर्ग पथ जोड़ना चाहिए।
java -cp .:<PATH>/clojure-1.6.0.jar:./src clojure.main
आपको सेट करने की जरूरत है *compile-path*
साथ में (set! *compile-path* "build")
.
फिर आप क्लास फ़ाइल प्राप्त करने के लिए संकलन कर सकते हैं।
user=> (compile "hello.core)
hello.core
कमांड लाइन
दो मुद्दे हैं:
- संकलन के लिए, सीपी को स्रोत निर्देशिका को शामिल करना चाहिए।
- पैरामीटर फ़ाइल पथ नहीं है, लेकिन नाम स्थान है।
यह संकलक को आमंत्रित करना है।
clojure> java -cp .:<PATH>/clojure-1.6.0.jar:./src -Dclojure.compile.path=build clojure.lang.Compile hello.core
Compiling hello.core to build
वर्ग फ़ाइल का निष्पादन
आपको उस निर्देशिका को इंगित करना चाहिए जहां कक्षा फाइलें स्थित हैं।
clojure> java -cp .:<PATH>/clojure-1.6.0.jar:./build hello.core
Hello, World!