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

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

问题描述

过去我使用 clojure.org 提供的 windows 安装程序在我的各种 Windows 机器上安装 clojure.Clojure 1.9 已经发布了几个星期,但据我所知,仍然没有 Windows 安装程序或基于 Java 的通用安装程序的迹象.

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.

我尝试从 clojure.org 下载 jars 并运行

I've tried downloading the jars from clojure.org and running

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.classclojure/spec/alpha.clj 看来现在我不在了运气.

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.

那么 - 从拥有 1.9.0 jar 到使其全部在 Windows 上运行,是否有一个分步步骤?

So - is there a step-by-step to go from having the 1.9.0 jars to making it all run on Windows?

欢迎所有建议.

推荐答案

TL;DR:

您还必须下载 org.clojure/spec.alphaorg.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

(请注意,您的版本会有所不同;对于 unix 系列的操作系统,将会有 : instad of ;).

(Note, that your versions there will be different; and there will be : instad of ; for the unix family of OS).

随着 Clojure 最近的变化,在 alpha 子命名空间中为 Spec 使用专用工件,仅使用常规 jar 启动简单的 REPL 不再容易(例如 java -jar $CLOJURE_JAR clojure.main).那么现在如何开始呢?

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?

在您最好在某处执行 lein new 之前,将 org.clojure/clojure 依赖项更改为您喜欢的版本并执行 lein deps :tree 获取所有需要的东西并显示 org.clojure/core 现在依赖的东西.例如

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

您所有的工件最终都在 ~/.m2/repository 中.所以接下来你必须建立你的类路径来调用 REPL.您现在可以在该虚拟项目中运行 lein with-profile uberjar cp 以获取 Leiningen 正在使用的类路径.例如:

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

删除 testsrcresources 那些,也就是你必须传递给 -cp.

Remove the test, src, and resources ones and that is, what you have to pass to -cp.

入门中所述,clojure CLI 还没有适用于 Windows.

As stated in the Getting Started the clojure CLI is not yet available for Windows.

这篇关于Clojure 1.9 windows 安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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