【问题标题】:Clojure, Leiningen, and CLASSPATH on WindowsWindows 上的 Clojure、Leiningen 和 CLASSPATH
【发布时间】:2012-02-10 10:25:58
【问题描述】:

在 Windows 上安装 Leiningen 的正确方法是什么?我抓住了脚本并进行了自我安装。尝试运行 lein new tutorial 并收到此错误:

线程“main”中的异常 java.lang.RuntimeException: java.io.FileNotFoundExcep 化:在类上找不到 leiningen/core__init.class 或 leiningen/core.clj 小路: 在 clojure.lang.Util.runtimeException(Util.java:165) 在 clojure.lang.Compiler.eval(Compiler.java:6476) 在 clojure.lang.Compiler.eval(Compiler.java:6431) 在 clojure.core$eval.invoke(core.clj:2795) 在 clojure.main$eval_opt.invoke(main.clj:296) 在 clojure.main$initialize.invoke(main.clj:315) 在 clojure.main$script_opt.invoke(main.clj:339) 在 clojure.main$main.doInvoke(main.clj:426) 在 clojure.lang.RestFn.invoke(RestFn.java:482) 在 clojure.lang.Var.invoke(Var.java:417) 在 clojure.lang.AFn.applyToHelper(AFn.java:178) 在 clojure.lang.Var.applyTo(Var.java:518) 在 clojure.main.main(main.java:37) 原因:java.io.FileNotFoundException:找不到 leiningen/core_init。 类路径上的类或 leiningen/core.clj: 在 clojure.lang.RT.load(RT.java:430) 在 clojure.lang.RT.load(RT.java:398) 在 clojure.core$load$fn_4610.invoke(core.clj:5386) 在 clojure.core$load.doInvoke(core.clj:5385) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在 clojure.core$load_one.invoke(core.clj:5200) 在 clojure.core$load_lib.doInvoke(core.clj:5237) 在 clojure.lang.RestFn.applyTo(RestFn.java:142) 在 clojure.core$apply.invoke(core.clj:602) 在 clojure.core$load_libs.doInvoke(core.clj:5271) 在 clojure.lang.RestFn.applyTo(RestFn.java:137) 在 clojure.core$apply.invoke(core.clj:604) 在 clojure.core$use.doInvoke(core.clj:5363) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在用户 $eval1.invoke(NO_SOURCE_FILE:1) 在 clojure.lang.Compiler.eval(Compiler.java:6465) ... 11 更多

得到这个后,我将它添加到我的类路径中: C:\Users\Owner.lein\self-installs\leiningen-2.0.0-SNAPSHOT-standalone.jar 再次运行并得到同样的错误。我错过了什么?

更新 根据@mtyaka 的建议使用 1.6.2 版本

现在我收到此错误:

线程“main”中的异常 java.lang.RuntimeException: java.lang.NoSuchMethodErr 或:clojure.lang.KeywordLookupSite.(ILclojure/lang/Keyword;)V 在 clojure.lang.Util.runtimeException(Util.java:165) 在 clojure.lang.Compiler.eval(Compiler.java:6476) 在 clojure.lang.Compiler.eval(Compiler.java:6431) 在 clojure.core$eval.invoke(core.clj:2795) 在 clojure.main$eval_opt.invoke(main.clj:296) 在 clojure.main$initialize.invoke(main.clj:315) 在 clojure.main$script_opt.invoke(main.clj:339) 在 clojure.main$main.doInvoke(main.clj:426) 在 clojure.lang.RestFn.invoke(RestFn.java:482) 在 clojure.lang.Var.invoke(Var.java:417) 在 clojure.lang.AFn.applyToHelper(AFn.java:178) 在 clojure.lang.Var.applyTo(Var.java:518) 在 clojure.main.main(main.java:37) 引起:java.lang.NoSuchMethodError: clojure.lang.KeywordLookupSite.(IL clojure/lang/关键字;)V 在 leiningen.util.paths$native_arch_path.(paths.clj:32) 在 leiningen.util.paths_init.load(Unknown Source) 在 leiningen.util.paths_init.(Unknown Source) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(未知来源) 在 clojure.lang.RT.loadClassForName(RT.java:2030) 在 clojure.lang.RT.load(RT.java:417) 在 clojure.lang.RT.load(RT.java:398) 在 clojure.core$load$fn__4610.invoke(core.clj:5386) 在 clojure.core$load.doInvoke(core.clj:5385) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在 clojure.core$load_one.invoke(core.clj:5200) 在 clojure.core$load_lib.doInvoke(core.clj:5237) 在 clojure.lang.RestFn.applyTo(RestFn.java:142) 在 clojure.core$apply.invoke(core.clj:602) 在 clojure.core$load_libs.doInvoke(core.clj:5271) 在 clojure.lang.RestFn.applyTo(RestFn.java:137) 在 clojure.core$apply.invoke(core.clj:602) 在 clojure.core$require.doInvoke(core.clj:5352) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在 leiningen.core$loading_4414_auto_.invoke(core.clj:1) 在 leiningen.core_init.load(Unknown Source) 在 leiningen.core_init.(Unknown Source) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(未知来源) 在 clojure.lang.RT.loadClassForName(RT.java:2030) 在 clojure.lang.RT.load(RT.java:417) 在 clojure.lang.RT.load(RT.java:398) 在 clojure.core$load$fn_4610.invoke(core.clj:5386) 在 clojure.core$load.doInvoke(core.clj:5385) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在 clojure.core$load_one.invoke(core.clj:5200) 在 clojure.core$load_lib.doInvoke(core.clj:5237) 在 clojure.lang.RestFn.applyTo(RestFn.java:142) 在 clojure.core$apply.invoke(core.clj:602) 在 clojure.core$load_libs.doInvoke(core.clj:5271) 在 clojure.lang.RestFn.applyTo(RestFn.java:137) 在 clojure.core$apply.invoke(core.clj:604) 在 clojure.core$use.doInvoke(core.clj:5363) 在 clojure.lang.RestFn.invoke(RestFn.java:408) 在用户 $eval1.invoke(NO_SOURCE_FILE:1) 在 clojure.lang.Compiler.eval(Compiler.java:6465) ... 11 更多

【问题讨论】:

  • 您的常规环境中是否设置了CLASSPATH 变量? Quicktime 对我这样做,它打破了 leiningen。
  • 这是我当前的 CLASSPATH .;C:\jruby-1.5.0.RC3\lib\jruby.jar;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava .zip;C:\clojure-1.3.0\clojure-1.3.0.jar;C:\users\owner\.lein\self-installs\leiningen-1.6.2-standalone.jar
  • 在 CLASSPATH 中没有 lein 时我得到同样的错误
  • 您可能想在 leiningen google 群组上发帖。

标签: clojure classpath leiningen


【解决方案1】:

您似乎正在尝试安装 leiningen 2,该 leiningen 2 目前正处于开发阶段,尚未真正准备好。如果self-install 目前不起作用,我不会感到惊讶,尤其是在 Windows 上。

请尝试stable version of lein.bat(当前为 1.6.2)。

【讨论】:

  • lein.bat 1.6.2 与 Clojure 1.3.0 兼容吗?
  • 您的 leiningen 项目可以免费使用任何版本的 clojure,但在您的 CLASSPATH 中包含特定版本的 clojure 可能会导致 leiningen 1.x 出现问题...您可以尝试从中删除 Clojure 1.3 CLASSPATH?
  • 认为我解决了这个问题。在 CLASSPATH 中有 Clojure jar 文件的路径,而不仅仅是 Clojure 文件夹的路径。谢谢。
  • @mtyaka 谢谢!你是当下的英雄!一旦路径设置正确,新的 lein.bat 就可以完美运行。
【解决方案2】:

我只是想提请注意解决方案,因为现在它可以在第一个答案的 cmets 中找到。如果您在线程“main” java.lang.RuntimeException: java.lang.NoSuchMethodErr... 中遇到异常,则需要从类路径中删除 clojure jar 文件。

我使用的是 Leiningen 1.6.2 和 clojure-1.3.0,和 brun 一样,所以不能确定其他版本是否有同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 2012-07-07
    • 1970-01-01
    • 2011-01-09
    • 2014-02-13
    • 1970-01-01
    • 2011-04-08
    • 2012-04-20
    相关资源
    最近更新 更多