【问题标题】:Could not locate clojure/java/jdbc/sql__init.class or clojure/java/jdbc/sql.clj on classpath在类路径上找不到 clojure/java/jdbc/sql__init.class 或 clojure/java/jdbc/sql.clj
【发布时间】:2016-02-09 07:27:40
【问题描述】:

我在使用 MySQL 运行一个简单的 Clojure/Compojure 项目时遇到问题。

这是我的项目定义:

(defproject picenum "compojure"
  :description "Ascoli ❤ Clojure"
  :url "http://localhost:3000/"
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [compojure "1.4.0"]
                 [ring/ring-json "0.4.0"]
                 [korma "0.4.2"]
                 [log4j "1.2.17"]
                 [mysql/mysql-connector-java "5.1.37"]
                 [org.clojure/java.jdbc "0.4.2"]
                 [c3p0/c3p0 "0.9.1.2"]
                 [hiccup "1.0.5"]]
  :plugins [[lein-ring "0.9.7"]]
  :ring {:handler picenum.handler/app}
  :profiles
  {:dev {:dependencies [[ring-mock "0.1.5"]]}})

当我运行它时,我得到:

java.io.FileNotFoundException: Could not locate clojure/java/jdbc/sql__init.class or clojure/java/jdbc/sql.clj on classpath.

在我升级大部分依赖项后它停止工作。 我错过了什么?

编辑: 这是处理程序命名空间定义

(ns picenum.handler
  (:import com.mchange.v2.c3p0.ComboPooledDataSource)
  (:use compojure.core
        ring.middleware.json
        ring.util.response
        korma.db
        korma.core
        hiccup.core
        hiccup.util
        hiccup.page)
  (:require [compojure.handler :as handler]
            [compojure.route :as route]
            [clojure.java.jdbc :as jdbc]
            [clojure.java.jdbc.sql :as sql]))

【问题讨论】:

  • project.clj 看起来是正确的。您介意发布您的命名空间定义(您尝试使用 JDBC 的定义)吗?

标签: jdbc clojure compojure


【解决方案1】:

正如 number23_cn 建议的那样,删除 [clojure.java.jdbc.sql :as sql] :require 会停止给出关于不存在的 sql.clj 的错误

clojure-doc.org 提供明确的information how to use the sql connector

在 clojure 中获得有效的 mysql 连接的步骤:

在 project.clj 中添加依赖:

:dependencies [[org.clojure/java.jdbc "0.4.2"]
               [mysql/mysql-connector-java "5.1.38"]]

在命名空间定义中需要数据库连接器:

(:require [clojure.java.jdbc :as j])

定义数据库连接:

(def db-map {:subprotocol "mysql"
             :subname "//localhost:3306/SCHEME"
             :user "DB_USER"
             :password "DB_USER_PASS"})

查询数据库:

(j/query db-map ["SELECT * FROM table"])

在以下位置查找更多示例 http://clojure-doc.org/articles/ecosystem/java_jdbc/using_sql.html

【讨论】:

    【解决方案2】:

    java.jdbc 库上没有 sql.clj
    请删除您文件中的[clojure.java.jdbc.sql :as sql]

    【讨论】:

    • 是的,我的错,我刚刚检查了 java.jdbc project.clj。
    • 我按照你的建议做了,现在我得到了No such var: jdbc/with-connection
    • Unable to resolve symbol: with-connection in this context
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多