【问题标题】:Classpath issue in leinigenleinigen 中的类路径问题
【发布时间】:2026-01-09 09:50:02
【问题描述】:

我一直在努力用 leiningen 构建一个独立的 .jar。尽管浏览了githubAlex Ott's Website 上的示例以及一些相关问题,但我无法弄清楚如何正确设置项目。在它抱怨的项目中做lein uberjar之后

Could not locate clojure/contrib/string__init.class or clojure/contrib/string.clj on classpath:  (collision.clj:1)

我的项目目录是这样的

.
├── classes
├── lib
│   ├── clojure-1.2.1.jar
│   └── clojure-contrib-1.1.0.jar
├── project.clj
└── src
   └── collision
        └── collision.clj

我的project.clj

(defproject collision "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.2.1"]
                 [org.clojure/clojure-contrib "1.1.0"]]
  :main collision.collision)

collision.clj:

(ns collision.collision
  (:require 
    clojure.set
    clojure.string
    [clojure.contrib.string :as st]
    [clojure.contrib.str-utils :as su]
    [clojure.contrib.combinatorics :as cmbn]))

... defns ...

(defn -main []
  (...))

(-main)

代码适用于 REPL。我如何告诉 leiningen 在哪里可以找到clojure-contrib-1.1.0.jar?我不是 Java 程序员,也不是很习惯类路径问题;非常感谢快速而肮脏的帮助。

【问题讨论】:

  • 你运行过 lein deps 吗?你能从我的 lein 脚本 CLOJURE_JAR="$HOME/.m2/repository/org/clojure/clojure/1.2.1/clojure-1.2.1.jar"中找到适当的 .m2 目录下的 jar 文件吗? >

标签: clojure classpath leiningen


【解决方案1】:

尝试使用[org.clojure/clojure-contrib "1.2.0"] 而不是[org.clojure/clojure-contrib "1.1.0"]

在 1.1.0 版本中不存在命名空间clojure.contrib.string

【讨论】:

  • 感谢您的提示。我试试这个。