如何使我的Informix JDBC驱动程序为leiningen所知

时间:2014-03-06 21:14:01

标签: maven jdbc clojure informix leiningen

这个问题是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))))))

我很感激任何指针或帮助。

1 个答案:

答案 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"]]