4

SpringでJDBCを使用してクエリを実行するコードを記述しましたが、例外が発生します(以下を参照)。

これが私のcontext.xmlです

 <bean id="dataSource" 
       class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
   <property name="url" value="jdbc:oracle:thin:@Mohsen-PC:1521:mydb"/>
   <property name="username" value="system"/>
   <property name="password" value="123"/>    
 </bean>

 <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
   <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
 </bean>

 <bean id="nativeJdbcExtractor" 
     class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/>

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource" ref="dataSource"/>
 </bean>
</beans>

main.java

import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

class Main {

  public static void main(String args[]) throws Exception {

    ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml");

    DataSource dataSource = (DataSource) ac.getBean("dataSource");

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

    System.out.println(jdbcTemplate.queryForList("select EMPLOYEE_ID from EMPLOYEE", 
                                                  Long.class));
  }
}

私が見る例外は次のとおりです。

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: 
  Error creating bean with name 'dataSource' defined in class path resource [context.xml]: 
  Error setting property values; nested exception is 
  org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
  PropertyAccessException 1: org.springframework.beans.MethodInvocationException: 
  Property 'driverClassName' threw exception; nested exception is 
  java.lang.IllegalStateException: Could not load JDBC driver class 
  [oracle.jdbc.driver.OracleDriver] at 
  org.springframework.beans.factory.support.
                             AbstractAutowireCapableBeanFactory.applyPropertyValues(
                                                AbstractAutowireCapableBeanFactory.java:1396)

編集:上記の例外が問題を明らかにするのに十分であるため、スタックトレースの残りをカットします。

ここで何が問題になっていますか?

4

3 に答える 3

12

クラスパスに oracle jdbc ドライバーがないようです。このパスから jar ファイルをダウンロードし、これをクラスパスに追加してください。

編集
されたSpring jdbcは、生のjdbcレイヤーの上で機能するテンプレートレイヤーです。データベースへのアクセスを容易にするためのいくつかのユーティリティ メソッドを提供するだけです。このレイヤーは内部的に jdbc レイヤーが機能する必要があるため、そのデータベースのドライバーに接続するすべてのデータベースも含める必要があります。この場合、Oracle ドライバーを含める必要があります。

于 2012-06-11T11:17:15.847 に答える
1

JDBCドライバーを含む(Oracle提供の)jarファイルがクラスパスにないようです。

スタックトレースの「IllegalStateException:JDBCドライバークラス[oracle.jdbc.driver.OracleDriverを読み込めませんでした」」という部分に注意してください。

于 2012-06-11T11:18:28.170 に答える