【发布时间】:2012-06-11 11:11:48
【问题描述】:
我已编写代码在 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)
编辑:删除堆栈跟踪的其余部分,因为上述异常足以说明问题。
这里出了什么问题?
【问题讨论】:
-
您是否将
ojdbcxxx.jar放入您的类路径中? -
@adarshr,是的,org.springframework.jdbc-3.1.0.RELEASE
-
不是这样的。您需要来自 Oracle 的 JDBC 驱动程序 JAR 文件。
-
在我们的例子中(Spring 4、eclipse Luna、JDK 7、ojdbc6.jar),我们必须将 ojdbc jar 和 spring-jdbc.jar 添加到 /WEB-INF/lib 文件夹中,然后它开始起作用了