Clojure 1.9 Windows安装 [英] Clojure 1.9 windows install

查看:75
本文介绍了Clojure 1.9 Windows安装的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

过去,我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆