2017-12-22 61 views
6

अतीत में मैंने अपनी विभिन्न विंडोज मशीनों पर क्लोजर स्थापित करने के लिए clojure.org पर प्रदान किए गए विंडोज इंस्टालर का उपयोग किया है। Clojure 1.9 कुछ हफ्तों के लिए बाहर गया है लेकिन अभी भी विंडोज के लिए इंस्टॉलर का कोई संकेत नहीं है या एक सामान्य जावा-आधारित इंस्टॉल है, जहां तक ​​मुझे मिल सकता है।क्लोजर 1.9 विंडोज़ इंस्टॉल

मैं clojure.org से जार को डाउनलोड करने और

java -jar clojure.1.9.0.jar 

चल की कोशिश की है, लेकिन वह सिर्फ ढेर उदासीनता:

Exception in thread "main" java.lang.ExceptionInInitializerError 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Unknown Source) 
     at clojure.lang.RT.classForName(RT.java:2204) 
     at clojure.lang.RT.classForName(RT.java:2213) 
     at clojure.lang.RT.loadClassForName(RT.java:2232) 
     at clojure.lang.RT.load(RT.java:450) 
     at clojure.lang.RT.load(RT.java:426) 
     at clojure.core$load$fn__6548.invoke(core.clj:6046) 
     at clojure.core$load.invokeStatic(core.clj:6045) 
     at clojure.core$load.doInvoke(core.clj:6029) 
     at clojure.lang.RestFn.invoke(RestFn.java:408) 
     at clojure.core$load_one.invokeStatic(core.clj:5848) 
     at clojure.core$load_one.invoke(core.clj:5843) 
     at clojure.core$load_lib$fn__6493.invoke(core.clj:5888) 
     at clojure.core$load_lib.invokeStatic(core.clj:5887) 
     at clojure.core$load_lib.doInvoke(core.clj:5868) 
     at clojure.lang.RestFn.applyTo(RestFn.java:142) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$load_libs.invokeStatic(core.clj:5925) 
     at clojure.core$load_libs.doInvoke(core.clj:5909) 
     at clojure.lang.RestFn.applyTo(RestFn.java:137) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$require.invokeStatic(core.clj:5947) 
     at clojure.core.server$loading__6434__auto____8456.invoke(server.clj:9) 
     at clojure.core.server__init.load(Unknown Source) 
     at clojure.core.server__init.<clinit>(Unknown Source) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Unknown Source) 
     at clojure.lang.RT.classForName(RT.java:2204) 
     at clojure.lang.RT.classForName(RT.java:2213) 
     at clojure.lang.RT.loadClassForName(RT.java:2232) 
     at clojure.lang.RT.load(RT.java:450) 
     at clojure.lang.RT.load(RT.java:426) 
     at clojure.core$load$fn__6548.invoke(core.clj:6046) 
     at clojure.core$load.invokeStatic(core.clj:6045) 
     at clojure.core$load.doInvoke(core.clj:6029) 
     at clojure.lang.RestFn.invoke(RestFn.java:408) 
     at clojure.core$load_one.invokeStatic(core.clj:5848) 
     at clojure.core$load_one.invoke(core.clj:5843) 
     at clojure.core$load_lib$fn__6493.invoke(core.clj:5888) 
     at clojure.core$load_lib.invokeStatic(core.clj:5887) 
     at clojure.core$load_lib.doInvoke(core.clj:5868) 
     at clojure.lang.RestFn.applyTo(RestFn.java:142) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$load_libs.invokeStatic(core.clj:5925) 
     at clojure.core$load_libs.doInvoke(core.clj:5909) 
     at clojure.lang.RestFn.applyTo(RestFn.java:137) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$require.invokeStatic(core.clj:5947) 
     at clojure.core$require.doInvoke(core.clj:5947) 
     at clojure.lang.RestFn.invoke(RestFn.java:408) 
     at clojure.lang.Var.invoke(Var.java:381) 
     at clojure.lang.RT.doInit(RT.java:487) 
     at clojure.lang.RT.<clinit>(RT.java:336) 
     at clojure.main.<clinit>(main.java:20) 
Caused by: java.io.FileNotFoundException: Could not locate clojure/spec/alpha__init.class or clojure/spec/alpha.clj on classpath. 
     at clojure.lang.RT.load(RT.java:463) 
     at clojure.lang.RT.load(RT.java:426) 
     at clojure.core$load$fn__6548.invoke(core.clj:6046) 
     at clojure.core$load.invokeStatic(core.clj:6045) 
     at clojure.core$load.doInvoke(core.clj:6029) 
     at clojure.lang.RestFn.invoke(RestFn.java:408) 
     at clojure.core$load_one.invokeStatic(core.clj:5848) 
     at clojure.core$load_one.invoke(core.clj:5843) 
     at clojure.core$load_lib$fn__6493.invoke(core.clj:5888) 
     at clojure.core$load_lib.invokeStatic(core.clj:5887) 
     at clojure.core$load_lib.doInvoke(core.clj:5868) 
     at clojure.lang.RestFn.applyTo(RestFn.java:142) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$load_libs.invokeStatic(core.clj:5925) 
     at clojure.core$load_libs.doInvoke(core.clj:5909) 
     at clojure.lang.RestFn.applyTo(RestFn.java:137) 
     at clojure.core$apply.invokeStatic(core.clj:659) 
     at clojure.core$require.invokeStatic(core.clj:5947) 
     at clojure.main$loading__6434__auto____8543.invoke(main.clj:11) 
     at clojure.main__init.load(Unknown Source) 
     at clojure.main__init.<clinit>(Unknown Source) 
     ... 55 more 

और ऐसा लगता है के रूप में मैं फ़ाइलों clojure/spec/alpha__init.class या clojure/spec/alpha.clj की जरूरत नहीं है कि फिलहाल मैं भाग्य से बाहर हूं।

तो - क्या यह 1.9.0 जार विंडोज़ पर चलाने के लिए एक कदम-दर-चरण है?

सभी सुझावों का स्वागत है।

उत्तर

3

टी एल; डॉ:

तुम भी org.clojure/spec.alpha और org.clojure/core.specs.alpha डाउनलोड करने के लिए किया है। तब के साथ शुरू:

java -cp clojure-1.9.0-alpha17.jar;spec.alpha-0.1.123.jar;core.specs.alpha-0.1.10.jar clojure.main 

(ध्यान दें, कि अपने संस्करण अलग होगा, और वहाँ ओएस की यूनिक्स परिवार के लिए ; की : instad हो जाएगा)।

कैसे बारे में पता लगाने और अन्य deps लाने

एक अल्फा उप नाम स्थान में युक्ति के लिए समर्पित कलाकृतियों का उपयोग करने के Clojure में हाल ही में परिवर्तन के साथ करने के लिए, इसके साथ सिर्फ एक सरल आरईपीएल शुरू करने के लिए नहीं रह गया है आसान है नियमित जार (उदाहरण के लिए java -jar $CLOJURE_JAR clojure.main)। तो अब इसे कैसे शुरू करें?

की इससे पहले कि आप एक lein new कहीं ऐसा करने के लिए बेहतर होते हैं, org.clojure/clojure आप की तरह संस्करण के लिए निर्भरता को बदलने और एक lein deps :tree लाने के लिए है कि सभी की जरूरत है क्या करना है और क्या प्रदर्शित चीजों org.clojure/कोर अब पर निर्भर करता है। जैसे

[org.clojure/clojure "1.9.0-alpha17"] 
    [org.clojure/core.specs.alpha "0.1.10" :exclusions [[org.clojure/clojure] [org.clojure/spec.alpha]]] 
    [org.clojure/spec.alpha "0.1.123" :exclusions [[org.clojure/clojure]]] 

आपकी सभी कलाकृतियों ~/.m2/repository में समाप्त होती हैं। तो अगली बार आपको आरईपीएल को कॉल करने के लिए अपना क्लासपाथ बनाना होगा। क्लास पथ लीनिंगेन का उपयोग करने के लिए अब आप उस डमी प्रोजेक्ट में lein with-profile uberjar cp चला सकते हैं। उदा .:

$ lein with-profile uberjar cp 
/tmp/xxx/test:/tmp/xxx/src:/tmp/xxx/resources:/tmp/xxx/target/classes:/home/user/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar:/home/user/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar:/home/user/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar 
# this will be `;` instead of `:` as well here for windows 

परीक्षण, src, और संसाधनों लोगों निकालें और वह यह है कि, क्या आप -cp को पारित करने के लिए की है।

भविष्य समाधान

रूप Getting Startedclojure CLI में कहा गया है नहीं अभी तक विंडोज के लिए उपलब्ध है।

+1

इस उत्तर के लिए धन्यवाद! विंडोज़ पर चलाने के लिए आवश्यक एकमात्र परिवर्तन ';' के बजाय वर्ग पथ विभाजक के रूप में ':' का उपयोग करना है: 'जावा-सीपी क्लोजर-1.9.0.jar; spec।अल्फा-0.1.143.jar; core.specs.alpha-0.1.24.jar clojure.main' – JBiserkov

+0

@ जेबीसरकोव संकेत के लिए धन्यवाद। मैं जवाब अपडेट करूंगा। – cfrick

संबंधित मुद्दे