【问题标题】:cannot run ring with lein不能用 lein 跑环
【发布时间】:2016-02-09 07:57:42
【问题描述】:

我正在尝试使用 ring 和 lein 第一次运行,但在运行时遇到了问题。我从“使用 Clojure 进行 Web 开发”一书的第 1 章以及 https://quickleft.com/blog/your-first-clojure-web-app/ 中获取了这个示例。这两个网站的代码都给了我同样的错误——找不到类。

我有以下project.clj

(defproject myfirstwebapp "0.1.1"
   :description "A hello world for a Ring based web app"
   :dependencies [[org.clojure/clojure "1.8.0"]
             [ring "1.4.0"]]
   :plugins [[lein-ring "0.9.7"]]
   :dev-dependencies [[lein-ring "0.9.7"]]
   :ring {:handler myfirstwebapp.core/app})

还有下面的core.clj

(ns myfirstwebapp.core)
(defn app [req]
  {:status 200
   :headers {"content-Type" "text/html"}
   :body "Hello World!"})

我运行的命令是:

lein new myfirstwebapp
edit project.clj as above
cd myfirstwebapp
lein deps
edit src/myfirstwebapp/core.clj as above
lein ring server

现在我收到如下错误:

线程“main”中的异常 java.lang.ClassNotFoundException: leiningen.core.project$reduce_repo_step,编译:(C:\Users\ROG\form-init7789757414629005682.clj:1:17608)

我使用的不同组件的版本之间是否存在一些不匹配?还是别的什么?

【问题讨论】:

  • 最初我怀疑这可能是我的 windows-7 上的本地主机问题。所以我使用stackoverflow/24340450的建议打开了它。但我仍然得到类未找到错误。
  • 你运行的是哪个版本的 lein?
  • lein 2.6.0.另外,我怀疑我的java可能不兼容,所以我从java6搬到了java7u79。同样的错误。
  • 字符串“Hello World! 缺少右引号。这是粘贴错误吗?
  • 谢谢。是的,字符串中还缺少一个引号。修好了。

标签: clojure leiningen ring


【解决方案1】:

这是一个bug in lein 2.6.0。已在 2.6.1 中修复

【讨论】:

  • 我还有一个关于从 lein 运行 Web 服务器的问题:如何停止进程?我做了ctrl-c,但是除非我重新启动系统,否则我无法再次运行。
  • 这是 Windows 的问题。 Lein 默认启动 2 个 JVM,在 Windows 中 ^c 只会杀死主要的 JVM,让运行服务器的 JVM 继续运行。我不再有 Windows,但尝试运行 lein trampoline ring server。那应该只启动一个 JVM。如果这不起作用,您将需要在进程管理中找到“java”进程并手动将其杀死
  • 再次感谢。但是貌似自动找到下一个端口(从3000移动到3001再运行),但是报错信息,看起来很糟糕。
  • 首先杀死所有“java”进程并尝试lein trampoline ring server和^C
猜你喜欢
  • 1970-01-01
  • 2018-06-04
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多