gpt4 book ai didi

java - org.apache.commons.dbcp.SQLNestedException : Cannot load JDBC driver class '${driver}'

转载 作者:行者123 更新时间:2023-11-29 03:22:21 25 4
gpt4 key购买 nike

我是 Spring 的初学者。这是我的 beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="DB.properties" />
</bean>

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${uname}"/>
<property name="password" value="${pwd}"/>
</bean>
</beans>

DB.properties 如下:

#database connection propertiess
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/Payment
uname=root
pwd=renu@193

我收到以下错误:

        Apr 04, 2014 11:07:25 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [beans.xml]
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${driver}'
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.student.spring.test.RunClass.main(RunClass.java:22)
Caused by: java.lang.ClassNotFoundException: ${driver}

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
... 3 more

我知道这是什么错误。此错误与 BasicDataSource 类有关。找不到此类......但我已经在项目的构建路径中包含了所需的 jars。 jar 如下所示......a)/home/praveen/Downloads/commons-dbcp-1.4.jarb)/home/praveen/Downloads/org.apache.commons.pool.jar

我读过一些可能是导致问题的 jars 版本......并且相互干扰......

jar 已经在项目构建路径中可用....请帮我解决这个问题。我将不胜感激....

RunClass.java 如下:

package com.student.spring.test;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

@SuppressWarnings("deprecation")
public class RunClass {
public static void main(String[] args) {
Resource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);


BasicDataSource bds = (BasicDataSource) factory.getBean("myDataSource");
Connection connection;
try {
connection = bds.getConnection();
System.out.println(bds.getDriverClassName());
System.out.println(bds.getUrl());
System.out.println(bds.getUsername());
System.out.println(bds.getPassword());
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

最佳答案

如果您没有使用 maven,请确保您的 DB.properties 位于如下位置:

    src-|-package1
|-package2
.
.
.
|-packageN
|-beans.xml
|-DB.properties

否则将文件位置的完整类路径指定为:

<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:packageName.jdbc1.properties" />
</bean>

然后按照@Sotirios 和@Ramesh 的指示更改您的代码:

    ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
BasicDataSource bds = (BasicDataSource) ctx.getBean("myDataSource");

关于java - org.apache.commons.dbcp.SQLNestedException : Cannot load JDBC driver class '${driver}' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com