这个问题是question的后续问题,但我觉得这个问题不同,需要单独发布。
如何配置Clojure,以识别Informix jdbc驱动程序?我正在使用莱宁根。
我已阅读此post,但仍感到困惑。我的Informix JDBC驱动程序是maven。我这样安装:
mvn install:install-file \
-DgroupId=com.informix \
-DartifactId=ufxjdbc \
-Dversion=3.50.JC9 \
-Dfile=/opt/IBM/Informix_JDBC_Driver/lib/ifxjdbc.jar \
-Dpackaging=jar \
-DgeneratePom=true
我已经接受过IBM(Informix)的支持,我可以运行他们的java演示程序,这意味着他们的JDBC驱动程序正常工作。
由于此错误:
Exception in thread "main" java.sql.SQLException:
No suitable driver found for
jdbc:informix-sqli://steamboy:1498/stores7/ministores:INFORMIXSERVER=steamboy
Informix支持认为我需要配置Clojure / leiningen,因此它可以找到Informix JDBC驱动程序。
这个驱动程序不在通常的leiningen依赖目录中,并且Informix支持说了一些关于让驱动程序进入Clojure的类路径的东西。我认为这意味着在Maven中安装。
project.clj
(defproject db-test "0.1.0-SNAPSHOT"
:description "Clojure database test"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]
[org.clojure/tools.cli "0.1.0"]
[org.clojure/java.jdbc "0.3.3"]]
:main db-test.core)
core.clj(为简洁起见)
(ns db-test.core
(require [clojure.string :as str])
(require [clojure.java.jdbc :as j])
(:use [clojure.tools.cli])
(:import java.util.Date)
(:gen-class)
)
(defn -main
[& args]
(def informix-db {:classname "com.informix.jdbc.IfxDriver"
:subprotocol "informix-sqli"
:subname (format "//%s:%s/%s:INFORMIXSERVER=%s"
(:host opts)
(:port opts)
(:database opts)
(:server opts))
:user (:user opts)
:password (:password opts)})
(let [customer-list
(j/query informix-db
["select * from customer"])]
(doseq [customer customer-list]
(println customer))))))
我很感激任何指针或帮助。
答案 0 :(得分:1)
您需要将适当的依赖关系信息添加到project.clj
文件中:
:dependencies [[com.informix.jdbc/com.springsource.com.informix.jdbc "3.0.0.JC3"]...
找到该依赖项的Springsource存储库:
:repositories [["springsource-release" "http://repository.springsource.com/maven/bundles/release"]
["springsource-external" "http://repository.springsource.com/maven/bundles/external"]]