lein swank在lein升级后无效

时间:2012-02-14 22:49:55

标签: clojure leiningen swank-clojure

升级Leiningen(从v1.6升级到v1.7),lein upgrade命令lein swank停止使用错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError:  
Caused by: java.lang.ClassNotFoundException:  
[...] 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class:  .  Program will exit.

由于我是从命令行尝试过的,我相信在这种情况下Emacs配置并不重要。所以我试图完全重新安装Leiningen。我做了什么(使用来自here的建议和错误消息):

rm -R ~/.m2
# rm ~/.lein/plugins/*  
lein self-install

(我只在第二次重新安装时使用了第二行,因此为了完整起见,这里是

然后我创建了新项目并安装了lein-swank插件,因为据我所知,目前是推荐的方式:

lein new test-project
lein plugin install swank-clojure 1.4.0  # I tried earlier version (1.3.2) too

最后,lein swank:

cd test-project
lein swank

但是得到了和以前一样的错误。

所以我的问题是:

  1. 如何解决此问题?
  2. 我是否正确重新安装Leiningen或缺少某些步骤?
  3. UPD。以下是使用新项目生成的project.clj

    (defproject test-project "1.0.0-SNAPSHOT"
       :description "FIXME: write description"
       :dependencies [[org.clojure/clojure "1.3.0"]])
    

1 个答案:

答案 0 :(得分:1)

swank-clojure troubleshooting page是否有帮助:

  

疑难解答

     

目前有多个版本的swank-clojure   运行lein swank或lein时类路径可能会导致问题   杰克项。建议不要把swank-clojure放进你的   :dev-dependencies但运行lein plugin install以安装它   而是全球所有项目。这也意味着人们黑客入侵   如果他们不是Emacs用户,你的项目就不必将其拉入。

     

某些软件包也可以提供旧版本的软件   传递的是swank-clojure,所以如果你是的话,请检查lib /目录   有问题。特别是,Incanter已经证明了这一点   问题。明智地使用:排除使其有效:

:dependencies [[incanter "1.2.3" :exclusions [swank-clojure]]]
     

自swank-clojure 1.3.4以来,clj-stacktrace版本较旧   您的项目或用户级插件中的0.2.1将导致无法使用   解析符号:pst-elem-str错误。请记住,用户级别   〜/ .lein / plugins中的插件是Leiningen 1.x中的uberjars,所以它就是   可能是你的一个插件(比如之前的lein-difftest)   版本1.3.7)包含旧的clj-stacktrace,即使它没有   它自己的文件。如果是,则指定较新的版本就足够了   你遇到了麻烦:

:dependencies [[clj-stacktrace "0.2.4"]]