2010-03-12 104 views
1

在配置Tomcat中获取抛出java.lang.ClassNotFoundException:com.mysql.jdbc.Driver异常

连接池

这是context.xml的

<Context path="/DBTest" docBase="DBTest" 
     debug="5" reloadable="true" crossContext="true"> 

    <!-- maxActive: Maximum number of dB connections in pool. Make sure you 
     configure your mysqld max_connections large enough to handle 
     all of your db connections. Set to -1 for no limit. 
     --> 

    <!-- maxIdle: Maximum number of idle dB connections to retain in pool. 
     Set to -1 for no limit. See also the DBCP documentation on this 
     and the minEvictableIdleTimeMillis configuration parameter. 
     --> 

    <!-- maxWait: Maximum time to wait for a dB connection to become available 
     in ms, in this example 10 seconds. An Exception is thrown if 
     this timeout is exceeded. Set to -1 to wait indefinitely. 
     --> 

    <!-- username and password: MySQL dB username and password for dB connections --> 

    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is 
     org.gjt.mm.mysql.Driver - we recommend using Connector/J though. 
     Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver. 
     --> 

    <!-- url: The JDBC connection url for connecting to your MySQL dB. 
     --> 

    <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="root" password="password" driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql:///BUSINESS"/> 

</Context> 

我得到以下异常这是豆进入

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="jdbc/TestDB"></property> 
    <property name="resourceRef" value="true"></property> 
</bean> 



org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Co 
nnection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Ca 
nnot load JDBC driver class 'com.mysql.jdbc.Driver' 
     at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(Dat 
aSourceUtils.java:82) 
     at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: 
382) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:45 
8) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:46 
6) 
     at com.businesscaliber.dao.Dao.getQueryForListMap(Dao.java:66) 
     at com.businesscaliber.dao.MiscellaneousDao.getDefaultSucessStory(Miscel 
laneousDao.java:109) 
     at com.businesscaliber.listeners.BusinessContextLoader.contextInitialize 
d(BusinessContextLoader.java:40) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContex 
t.java:3795) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4 
252) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase 
.java:760) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:74 
0) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 

     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831) 

     at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720 
) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490 
) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java 
:311) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:120) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) 

     at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) 

     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443 
) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:4 
48) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:700 
) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:585) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) 
Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driv 
er class 'com.mysql.jdbc.Driver' 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDat 
aSource.java:1136) 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSo 
urce.java:880) 
     at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(D 
ataSourceUtils.java:113) 
     at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(Dat 
aSourceUtils.java:79) 
     ... 30 more 
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:164) 
     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDat 
aSource.java:1130) 

回答

5

这里没有什么复杂的 - 你已经配置了mysql,但是mysql的jdbc驱动程序要么是你从未安装过的,要么从未放在类路径中。

忽略/禁用春天,休眠,连接池,只是试试这个Java代码在一个JSP或其他。

Class.forName("com.mysql.jdbc.Driver"); 

在此之前,工程类(如文件是在类路径),你会继续有悲伤

+1

对不起家伙,我忘了加上 “使用mysql-connector-java的5.1.10-bin.jar” 下的 “C:\ Apache的Tomcat的5.5.28 \ common \ lib文件” assums它会成功,如果它在应用程序中\ WEB-INF \ lib \ mysql-connector-java-5.1.10-bin.jar 但是代码在启动时加载数据时加载数据 谢谢 – Vicky 2010-03-12 06:02:43

2

您必须执行以下步骤:

1)春豆 的配置 - ------------------------------

<?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:tx="http://www.springframework.org/schema/tx" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter"> 
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="true" /> 
    <property name="generateDdl" value="true" /> 
    <property name="database" value="MYSQL" /> 
    <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" /> 
    </bean> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" 
    scope="singleton"> 
    <property name="jndiName" value="jdbc/jpaExamples" /> 
    <property name="resourceRef" value="true" /> 
</bean> 

<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

<!-- Definition of your beans --> 

</beans> 

2)DATAS的定义web-xml中的ource资源: ------------------------------------------ ------

<resource-ref> 
    <description>DB Connection</description> 
    <res-ref-name>jdbc/jpaExamples</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

3)server.xml中 语境资源的定义----------------------- ---------------------------

<Context docBase="WebServiceRequestPersistence_Web3" path="/WebServiceRequestPersistence_Web3" debug="5" reloadable="true" crossContext="true" source="org.eclipse.jst.jee.server:WebServiceRequestPersistence_Web3"> 
<Resource 
    name="jdbc/jpaExamples" 
    auth="Container" 
    type="javax.sql.DataSource" 
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000" 
    username="myUsername" 
    password="myPassword" 
    driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/jpaExamples" 
/> 
</Context> 

4 JDBC驱动程序jar的)复制成的Apache Tomcat的LIB 6 -------------------------------------------------- ---- 复制哟请在Apache Tomcat 6安装的lib子目录中安装MySQL Java连接器(例如:mysql-connector-java-5.1.6.jar)。

+0

我正在使用Tomcat Realm并需要将JDBC驱动程序到Tomcat的lib文件夹中..除此之外,还有另外一个选项吗?将驱动程序放置在WEB-INF> lib>下似乎不起作用。 – 2014-07-08 09:30:57

1

如果您使用的是MyEclipse,并且您正尝试从MyEclipse Tomcat运行它; 转到首选项(窗口>首选项),然后选择服务器>集成沙箱> MyEclipse Tomcat>路径 在calsspath前面添加jar。