【问题标题】:lein swank doesn't work after lein upgradelein 升级后 lein swank 不起作用
【发布时间】:2012-02-14 22:49:54
【问题描述】:

使用lein upgrade 命令lein swank 升级 Leiningen(从 v1.6 到 v1.7)后停止工作并出现错误消息:

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 或缺少某些步骤?

UPD。这是使用新项目生成的project.clj

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

【问题讨论】:

  • 错误信息不是说什么类没有找到吗?您能否将其添加到您的帖子中。另外,能否请您发布您的project.clj 文件。
  • @liwp:不,错误消息就像在 sn-p 中一样 - 没有类,只有空格和点。 project.clj 由 Leiningen 生成,没有任何修改。完全新鲜的项目。请注意,从那时起,我转移到另一台笔记本电脑上,全新的 Leinigen 安装运行良好。
  • 我还是想看看你的 project.clj 是指定 Clojure 1.2.1 还是 1.3.0。
  • @liwp:它是 1.3.0。请参阅我的完整更新project.clj(如果这仍然有意义的话)。

标签: clojure leiningen swank-clojure


【解决方案1】:

swank-clojure troubleshooting page 有帮助吗:

疑难解答

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

某些软件包也有可能引入旧版本的 swank-clojure 可传递,所以如果你是,请检查 lib/ 目录 有问题。特别是,众所周知,Incanter 展示了这一点 问题。明智地使用 :exclusions 使其工作:

: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,所以它是 可能是您的插件之一(例如之前的 le​​in-difftest 版本 1.3.7) 包含旧的 clj-stacktrace,即使它没有 那里有自己的文件。指定一个较新的版本就足够了,如果 你遇到了麻烦:

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

【讨论】:

  • 感谢您的回答,但正如我已经提到的,我重新安装了 Leinigen 并创建了全新的项目。因此这些建议是不适用的(除非我没有注意到 Leiningen 的一些依赖)。无论如何,请为相关答案投票。
  • 我记得在最近的某个时候必须添加 clj-stacktrace 作为依赖项才能让事情正常工作,但对于 Leiningen 1.7.0 和 swank 来说,这似乎不再需要了-clojure 1.4.0。抱歉,我无法提供更多帮助。我建议像以前一样删除所有内容,包括 lein 脚本,然后从头开始。
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2011-03-21
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 2013-07-09
相关资源
最近更新 更多