oracle - Clojure Lein 找不到 Oracle JDBC 驱动程序

标签 oracle maven jdbc clojure leiningen

我正在尝试使用 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

我做错了什么??

最佳答案

我一直在为同样的错误而苦苦挣扎。我发现实现这项工作的唯一方法是使用 com.oracle 的 maven groupId,而是使用其他类似 本地

试试这个(注意新的 groupId):

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

然后在 project.clj 中引用 ojdbc 依赖项,如下所示:

[local/ojdbc14 "9.2.0.5"]

关于oracle - Clojure Lein 找不到 Oracle JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249901/

相关文章:

maven - 如何将Maven/Gradle项目及其所有依赖项安装到本地存储库?

scala - 在 Maven 生成的包中包含 scala-library.jar

oracle - 匿名 block 是否存储在 SGA 中?

oracle - 在 Oracle 中从 varchar 查找下一个 id

Oracle 11g XE 安装不起作用。 "Create CONTROLFILE failed"

xml - Maven 版本插件、规则集、规则和ignoreVersions 标签

java - 如何使用 jdbc 在 oracle 10g 中插入大型 clob 数据(> 4K 字符)

java - 为什么使用 resultset!=null 它会检查 null

java - 线程中的异常 "main"org.hibernate.exception.SQLGrammarException : ORA-02289: sequence does not exist

sql - 用下划线替换破折号和空格,并使列名大写