Clojure 1.9 Windows安装 [英] Clojure 1.9 windows install
问题描述
过去,我使用clojure.org提供的Windows安装程序在我的各种Windows计算机上安装clojure。据我所知,Clojure 1.9已经发布了几周,但仍没有Windows安装程序或基于Java的通用安装程序的迹象。
I已经尝试从clojure.org下载罐子并运行
java -jar clojure.1.9.0.jar
但这只是转储堆栈:
线程主中的异常java.lang.ExceptionInInitializerError
在java.lang.Class.forName0(本机方法)
在java.lang.Class.forName(未知源)
在clojure.lang.RT.classForName(RT.java:2204)
在clojure.lang.RT.classForName(RT.java:2213)
在clojure.lang.RT.loadClassForName(RT .java:2232)clojure.lang.RT.load(RT.java:450)
在clojure.lang.RT.load(RT.java:426)
在clojure。 core $ load $ fn__6548.invoke(core.clj:6046)
在clojure.core $ load.invokeStatic(core.clj:6045)
在clojure.core $ load.doInvoke(core .clj:6029)clojure.lang.RestFn.invoke(RestFn.java:408)
在clojure.core $ load_one.invokeStatic(core.clj:5848)
在clojure。 core $ load_one.invoke(core.clj:5843)
在clojure.core $ load_lib $ fn__6493.invoke(core.clj:5888)
在clojure.core $ load_lib.invokeStatic(core.clj: 5887)clojure.core中的
.core $ load_lib.doInvoke(core.clj:5868)clojure.lang.lang.RestFn.applyTo(RestFn.java:142)
clojure.core $ apply中的
.invokeStatic(core.clj:659)
在clojure.core $ load_libs.invokeStatic(core.clj:5925)
在clojure.core $ load_libs.doInvoke(core.clj:5909)
在clojure.lang.RestFn.applyTo(RestFn.java:137)
在clojure.core $ apply.invokeStatic(core.clj:659)
在clojure.core $ require.invokeStatic(core。 clj:5947)clojure.core.server $ loading__6434__auto ____ 8456.invoke(server.clj:9)
在clojure.core.server__init.load(未知源)
在c lojure.core.server__init。< clinit>(未知源)java.lang.Class.forName0处的
(本机方法)java.lang.Class.forName处
(未知源)的
在clojure.lang.RT.classForName(RT.java:2204)
在clojure.lang.RT.classForName(RT.java:2213)
在clojure.lang.RT.loadClassForName(RT.java :2232)clojure.lang.RT.load(RT.java:450)
clojure.lang.RT.load(RT.java:426)
clojure.core $ load $ fn__6548.invoke(core.clj:6046)
在clojure.core $ load.invokeStatic(core.clj:6045)
在clojure.core $ load.doInvoke(core.clj:6029)
在clojure.lang.RestFn.invoke(RestFn.java:408)
在clojure.core $ load_one.invokeStatic(core.clj:5848)
在clojure.core $ load_one.invoke (core.clj:5843)
在clojure.core $ load_lib $ fn__6493.invoke(core.clj:5888)
在clojure.core $ load_lib.invokeStatic(core.clj:5887)
在clojure.core $ load_lib.doInvok e(core.clj:5868)
在clojure.lang.RestFn.applyTo(RestFn.java:142)
在clojure.core $ apply.invokeStatic(core.clj:659)
在clojure.core $ load_libs.invokeStatic(core.clj:5925)
在clojure.core $ load_libs.doInvoke(core.clj:5909)
在clojure.lang.RestFn.applyTo(RestFn.java :137)clojure.core $ apply.invokeStatic(core.clj:659)
clojure.core $ require.invokeStatic(core.clj:5947)
clojure.core $ require.doInvoke(core.clj:5947)
在clojure.lang.RestFn.invoke(RestFn.java:408)
在clojure.lang.Var.invoke(Var.java:381)
在clojure.lang.RT.doInit(RT.java:487)
在clojure.lang.RT。< clinit>(RT.java:336)
在clojure.main。< clinit>(main.java:20)
原因:java.io.FileNotFoundException:无法在类路径上找到clojure / spec / alpha__init.class或clojure / spec / alpha.clj。
在clojure.lang.RT.load(RT.java:463)
在clojure.lang.RT.load(RT.java:426)
在clojure.core $ load $ fn__6548 .invoke(core.clj:6046)
在clojure.core $ load.invokeStatic(core.clj:6045)
在clojure.core $ load.doInvoke(core.clj:6029)
在clojure.lang.RestFn.invoke(RestFn.java:408)
在clojure.core $ load_one.invokeStatic(core.clj:5848)
在clojure.core $ load_one.invoke(core。 clj:5843)clojure。$
在clojure.core $ load_lib $ fn__6493.invoke(core.clj:5888)
在clojure.core $ load_lib.invokeStatic(core.clj:5887)
在clojure .core $ load_lib.doInvoke(core.clj:5868)
在clojure.lang.RestFn.applyTo(RestFn.java:142)
在clojure.core $ apply.invokeStatic(core.clj:659 )
在clojure.core $ load_libs.invokeStatic(core.clj:5925)
在clojure.core $ load_libs.doInvoke(core.clj:5909)
在clojure.lang.RestFn。 applyTo(RestFn.java:137)
在cl ojure.core $ apply.invokeStatic(core.clj:659)
在clojure.core $ require.invokeStatic(core.clj:5947)
在clojure.main $ loading__6434__auto ____ 8543.invoke(main.clj: 11)clojure.main__init.load中的
(未知来源)clojure.main__init中的
。< clinit>(未知源)
... 55更多
,因为我没有文件 clojure / spec / alpha__init.class
或 clojure / spec / alpha.clj
看来我此刻不走运。
所以-从拥有1.9.0版jar到使它们都可以在Windows上运行,是否还有逐步的方法?
欢迎所有建议。
TL; DR:
您还必须下载 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
(请注意,您的版本会有所不同;并且会出现的
; 。
如何查找并获取其他部门
随着Clojure的最新变化,在Spec中使用专用工件一个alpha子命名空间,仅使用常规jar(例如 java -jar $ CLOJURE_JAR clojure.main
)启动简单的REPL不再容易。那么如何立即开始呢?
从现在开始,最好在某个地方做一个 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:排除项[[org.clojure / clojure] [org.clojure / spec.alpha]]
[org.clojure / spec.alpha 0.1.123:排除项[[ org.clojure / clojure]]]]
所有工件都以结尾! /.m2/存储库
。因此,接下来您必须建立您的类路径以调用REPL。现在,您可以在该虚拟项目中运行 lein with-profile uberjar cp
以获取Leiningen使用的类路径。例如:
$ lein with-profile uberjar cp
/ tmp / xxx / test:/ tmp / xxx / src :/ tmp / xxx /资源:/ tmp / xxx /目标/类:/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
#对于Windows
删除 test , src 和资源,这就是您必须要做的传递给 -cp
。
未来解决方案
如入门 clojure
CLI所述Windows尚不可用。
In the past I've use the windows installer provided at clojure.org to install clojure on my various Windows machines. Clojure 1.9 has been out for a few weeks now but still no sign of an installer for Windows or a generic Java-based install, as far as I can find.
I've tried downloading the jars from clojure.org and running
java -jar clojure.1.9.0.jar
but that just dumps stack:
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
and as I don't have files clojure/spec/alpha__init.class
or clojure/spec/alpha.clj
it appears that at the moment I'm out of luck.
So - is there a step-by-step to go from having the 1.9.0 jars to making it all run on Windows?
All suggestions welcomed.
TL;DR:
You also have to download org.clojure/spec.alpha and org.clojure/core.specs.alpha. Then start with:
java -cp clojure-1.9.0-alpha17.jar;spec.alpha-0.1.123.jar;core.specs.alpha-0.1.10.jar clojure.main
(Note, that your versions there will be different; and there will be :
instad of ;
for the unix family of OS).
How to find out about and fetch the other deps
With the recent change in Clojure to use dedicated artifacts for Spec in an alpha sub-namespace, it is no longer easy to start a simple REPL just with the regular jar (e.g. java -jar $CLOJURE_JAR clojure.main
). So how to start it now?
As of before you are better off to do a lein new
somewhere, change the org.clojure/clojure dependency to the version you like and do a lein deps :tree
to fetch all that is needed and display what things org.clojure/core now depends on. E.g.
[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]]]
All your artifacts end up in ~/.m2/repository
. So next you have to build up your classpath to call the REPL. You can now run lein with-profile uberjar cp
in that dummy project to get the class path Leiningen is using. E.g.:
$ 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
Remove the test, src, and resources ones and that is, what you have to pass to -cp
.
Future solution
As stated in the Getting Started the clojure
CLI is not yet available for Windows.
这篇关于Clojure 1.9 Windows安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!