2017-12-22 27 views
6

이전에는 clojure.org에서 제공 한 windows installer를 사용하여 다양한 Windows 컴퓨터에 clojure를 설치했습니다. Clojure 1.9는 몇 주 동안 나왔지만 지금까지 Windows 나 일반적인 Java 기반 설치 프로그램의 설치 흔적은 찾지 못했습니다.Clojure 1.9 windows install

내가 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 병을 가지고 있기 때문에 Windows에서 모든 것을 실행하는 단계별로 단계별 설명이 있습니까?

모든 제안이 환영됩니다.

답변

3

TL; DR :

또한 org.clojure/spec.alphaorg.clojure/core.specs.alpha를 다운로드해야합니다. (그리고 OS의 유닉스 가족을 위해 ;: instad있을 것이다 버전이 다른이있을 것이다, 주)

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

: 그럼 시작합니다.

방법에 대해 알아 및 알파 하위 네임 스페이스에 사양에 대한 전용 아티팩트를 사용하는 Clojure의 최근 변화와 함께 다른 deps에게

를 가져,으로 단순한 REPL을 시작하는 데 더 이상 용이하지 일반 항아리 (예 : java -jar $CLOJURE_JAR clojure.main). 이제 어떻게 시작해야할까요?

당신이 어딘가에 lein new을 할 것이 더 낫다 전에로, org.clojure/Clojure에 당신이 좋아하는 버전으로 의존성을 변경하고 lein deps :tree 모든 것을이 필요한 가져 오기 위해 할 어떤 일 org.clojure를 표시/core은 이제 달려 있습니다. 예 :

[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이됩니다. 다음에는 REPL을 호출하기 위해 클래스 경로를 구축해야합니다. 이제 더미 프로젝트에서 lein with-profile uberjar cp을 실행하여 Leiningen이 사용하는 클래스 경로를 가져올 수 있습니다. 예컨대 :

$ 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

답장을 보내 주셔서 감사합니다. Windows에서 실행하는 데 필요한 유일한 변경 사항은 다음과 같이':'대신 클래스 경로 구분자로';'를 사용하는 것입니다 : 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 힌트를 보내 주셔서 감사합니다. 나는 대답을 업데이트 할 것이다. – cfrick