2017-12-22 6 views
6

In der Vergangenheit habe ich das Windows-Installationsprogramm von clojure.org benutzt, um clojure auf meinen verschiedenen Windows-Rechnern zu installieren. Clojure 1.9 ist seit einigen Wochen nicht mehr erhältlich, aber es gibt noch immer kein Installationsprogramm für Windows oder eine generische Java-basierte Installation, soweit ich es finden kann.Clojure 1.9 windows install

Ich habe versucht, die Gläser aus clojure.org Herunterladen und

java -jar clojure.1.9.0.jar 

läuft, aber dass Dumps nur Stapel:

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 

und als ich Dateien nicht clojure/spec/alpha__init.class oder clojure/spec/alpha.clj es erscheint dass ich im Moment kein Glück habe.

Also - gibt es eine Schritt-für-Schritt-Anleitung, um von den 1.9.0-Jars zu Windows Vista zu kommen?

Alle Vorschläge willkommen.

Antwort

3

TL; DR:

Sie müssen auch org.clojure/spec.alpha und org.clojure/core.specs.alpha herunterladen. Dann starten Sie mit:

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

(Beachten Sie, dass Ihre Versionen es anders sein, und es wird : instad von ; für die Unix-Familie von OS sein).

Wie wäre es, um herauszufinden, und die anderen deps

Mit der jüngsten Änderung der Clojure holen in einem Alpha-Unternamensraum gewidmet Artefakte für Spec zu verwenden, ist es nicht mehr einfach, ein einfaches REPL nur mit dem beginnen normales Glas (zB java -jar $CLOJURE_JAR clojure.main). Also wie starte ich es jetzt?

Ab bevor Sie sind besser dran mit einem lein new irgendwo zu tun, ändern sich die org.clojure/clojure Abhängigkeit zu der Version, die Sie mögen und tun lein deps :tree ein alles zu holen, was benötigt wird und zeigt, was die Dinge org.clojure/Kern hängt jetzt davon ab. Z.B.

[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]]] 

Alle Ihre Artefakte enden in ~/.m2/repository auf. Als nächstes müssen Sie Ihren Klassenpfad aufbauen, um die REPL aufzurufen. Sie können nun lein with-profile uberjar cp in diesem Dummy-Projekt ausführen, um den Klassenpfad zu erhalten, den Leiningen verwendet. Z.B .:

$ 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 

Entfernen Sie den Test, src und Ressourcen diejenigen, und das ist, was Sie -cp passieren müssen.

Zukunft Lösung

Wie in der Getting Started der clojure CLI angegeben ist noch nicht für Windows verfügbar.

+1

Vielen Dank für diese Antwort! Die einzige Änderung, die unter Windows ausgeführt werden muss, ist die Verwendung von ';' als Trennzeichen für den Klassenpfad anstelle von ':' so: 'java -cp clojure-1.9.0.jar; spec.alpha-0.1.143.jar; core.specs.alpha-0.1.24.jar clojure.main' – JBiserkov

+0

@Jbiserkov danke für den Hinweis. Ich werde die Antwort aktualisieren. – cfrick

Verwandte Themen