2

Clojure/Lein を使用して Oracle DB に接続しようとしています。

ここから ojdbc.jar をダウンロードしました: http://mirrors.ibiblio.org/maven/mule/dependencies/maven1/oracle-jdbc/jars/

次に、次を使用してローカルリポジトリにインストールしました。

mvn install:install-file -Dfile=C:\dev\tools\ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=9.2.0.5 -Dpackaging=jar -DgeneratePom=true

私の project.clj は次のようになります。

(defproject spike "0.1.0-SNAPSHOT"
  :description "spike"
  :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/java.jdbc "0.3.0-alpha4"]
                [compojure "1.1.5"]
                [ring/ring-json "0.1.2"]
                [oracle/classes12dms "9.0.4"]
                [com.oracle/ojdbc14 "9.2.0.5"]
        ]

  :plugins [[lein-ring "0.8.5"] [lein-deps-tree "0.1.2"]]
  :ring {:handler spike.handler/app}
   :repositories [["internal" "http://xxx:8080/artifactory/repo"] 
                 ["jboss" "https://repository.jboss.org/nexus/content/groups/public"]
                 ["jboss-dep" "https://repository.jboss.org/nexus/content/repositories/deprecated"] ]

  )

そして、spikeDb.clj へのアクセスは次のようになります。

(ns spike.spikeDb
  (:require [clojure.java.jdbc :as jdbc]
            [clojure.java.jdbc.sql :as sql])
  (:import  java.sql.Types))

(def devdb {:classname "oracle.jdbc.driver.OracleDriver"
            :subprotocol "oracle"
            :subname "thin:xxx/xxx@xxx:1528/xxx"})

(defn get-xxx [id]
 (jdbc/query devdb
   (sql/select [:TITLE :DESCRIPTION]
             :XXX (sql/where {:CODE id}))))

を使用してサーバーをロードします

lein ring server

しかし、そのページに移動すると、次のようになります。

java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:xxx/xxx@xxx:1528/xxx
DriverManager.java:604  java.sql.DriverManager.getConnection
DriverManager.java:190  java.sql.DriverManager.getConnection
jdbc.clj:206    clojure.java.jdbc/get-connection
jdbc.clj:628    clojure.java.jdbc/db-with-query-results*
jdbc.clj:646    clojure.java.jdbc/query
RestFn.java:425 clojure.lang.RestFn.invoke
spikeDb.clj:13  spike.spikeDb/get-xxx

私は何を間違っていますか??!

4

3 に答える 3

3

最新の Oracle ドライバーをダウンロードし、lein 2 を使用してローカル リポジトリにインストールする最も簡単な方法は、lein-localrepoプラグインを使用することです。

それを使用するには、編集して~/.lein/profiles.clj追加します{:user {:plugins [[lein-localrepo "0.5.3"]]}}

コマンドラインからそれを使用して、ドライバーをローカルリポジトリにインストールします

lein localrepo install -r D:\Path\To\Repo\
                          D:\Path\To\ojdbc6.jar
                          oracle.jdbc/oracledriver "12.1.0.1"

これで、project.clj で clojure.java.jdbc と一緒に参照できます。

(defproject spike "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/java.jdbc "0.3.3"]
                 [oracle.jdbc/oracledriver "12.1.0.1"]])

現在の db-spec を見ると、ドライバー クラス、サブプロトコル、およびサブネームが正しくないことに気付きました

(ns spike.spikedb
  (:require [clojure.java.jdbc :as jdbc]))

(def db
  {:classname    "oracle.jdbc.OracleDriver"
   :subprotocol  "oracle:thin"
   :subname      "//@hostname:port:sid"
   :user         "username"
   :password     "password"}))

(jdbc/query db ["select ? as one from dual" 1])
于 2014-02-18T14:23:03.980 に答える
3

Oracle JDBC ドライバーを Clojure/Leiningen で利用できるようにするにはどうすればよいですか?

  1. http://www.oracle.com/technetwork/database/features/jdbc/index.htmlから ojdbc7.jar をダウンロードします。

  2. mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc -Dversion=12.1.0.2 -Dpackaging=jar -Dfile=ojdbc7.jar -DgeneratePom=true </p>

  3. project.clj で:

    :依存関係 [ ... [com.oracle/ojdbc "12.1.0.2"] ... ]

12.1.0.2でない場合は、現在のojdbcバージョンに必要に応じて上記を調整します

于 2014-10-14T16:46:01.190 に答える