1

これは私を夢中にさせるようなものです.SOで同様の質問をいくつか見つけましたが、うまくいきません.

マルチプロジェクトの春(ウェブ)プロジェクトがあります。正常に開始されますが、データベースにクエリを実行するとすぐに

Nested in org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: 
Cannot create JDBC driver of class 'oracle.jdbc.OracleDriver' for connect URL 'jdbc:oracle:thin//server:1521:XE':

私は多くのことを試しました:ojdbc.jarがプロジェクト内にあることを確認しました(mavenリポジトリの一部ではないため、次のようにgradleでロードしました

compile files('lib/websphere_apis.jar','lib/ojdbc14.jar') 

私のサブ(ウェブではない)または私のウェブプロジェクトで。

でそれらを生成すると、戦争内の瓶を取得しますgradle war

jarをjettyRun構成に追加してみました

jettyRun {
   additionalRuntimeJars = files('lib/ojdbc14.jar')
}

が正しいかどうかは少し疑問ですfiles stmtが、それでも機能しません。

私はまた、私が置かなければならないSOを見つけました

   providedRuntime files("$projectDir/../lib/ojdbc14.jar")

標準の依存関係として私のwebapp内にありますが、それでもうまくいきません。以前は依存関係として含めることができたpostgresドライバーjarを使用していました。

4

1 に答える 1

1

JDBC .jar ファイルでは、クラスパス上の .jar をロードする場所に注意しないと、表示されているようなエラーが発生する可能性があります。確実にしたい場合は、クラスパス上の .jar を引数として、プログラムを呼び出しているメイン JVM に渡します。その理由は、.jar クラス ファイルが「デフォルトの JVM クラスローダー」にロードされていることを確認する必要があるためです。JDBC .jar を他の手段 (おそらく OSGI など) で動的にロードしようとしたり、Tomcat のようなカスタム クラスローダーによって動的にロードしようとすると、クラス ローダーの問題が発生する可能性があります。

于 2014-02-23T03:54:24.407 に答える