2013-07-28 33 views
5

Tôi đang cố gắng cấu hình một ứng dụng web Java MVC với Spring và Hibernate và cơ sở dữ liệu MySQL, nhưng khi tôi chạy máy chủ Tôi có lỗi này và tôi không biết vấn đề là gì.LRI: org.hibernate.util.JDBCExceptionReporter - Không thể tải lớp trình điều khiển JDBC 'com.mysql.jdbcDriver'

WARN : org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: null 
ERROR: org.hibernate.util.JDBCExceptionReporter - Cannot load JDBC driver class 'com.mysql.jdbcDriver' 
WARN : org.hibernate.cfg.SettingsFactory - Could not obtain connection to query metadata 
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbcDriver' 
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136) 
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) 
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:114) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:546) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbcDriver 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130) 
    ... 33 more 
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:546) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available 
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:107) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) 
    ... 22 more 
jul 28, 2013 12:26:19 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:546) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available 
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:107) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:138) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) 
    ... 22 more 

Tôi không biết nơi nào có thể là lỗi. Đây là applicationContext.xml của tôi. Lỗi này dường như nằm trong bean dataSource.

<?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:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 


    <!-- holding properties for database connectivity /--> 
    <context:property-placeholder location="classpath:jdbc.properties"/> 

    <!-- enabling annotation driven configuration /--> 
    <context:annotation-config/> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="${jdbc.driverClassName}"/> 
     <property name="url" value="${jdbc.url}"/> 
     <property name="username" value="${jdbc.username}"/> 
     <property name="password" value="${jdbc.password}"/> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
    </bean> 

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 

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

    <!-- Scans the classpath of this application for @Components to deploy as beans --> 
    <context:component-scan base-package="com.companyname.springapp.repository" /> 
    <context:component-scan base-package="com.companyname.springapp.service" /> 

</beans> 

Và đây là jdbc.properties tôi

hibernate.generate_statistics = true 
hibernate.show_sql = true 

jdbc.driverClassName=com.mysql.jdbcDriver 
jdbc.url=jdbc:mysql://localhost:3306/baseDeDatos 
jdbc.username=miUsuario 
jdbc.password=miContrasena 
hibernate.dialect=org.hibernate.dialect.MySQLDialect 

Tôi có tất cả jar này để nạp các lớp học. Một cái gì đó trong số họ (như jpa-api.jar) Tôi nghĩ rằng nó không cần thiết và những thứ khác được lặp lại, nhưng tôi đã có nó trong dự án khác mà tôi bắt đầu thực hiện điều này, và tôi đã không xóa nó:

activation-1.1.jar 
antlr-2.7.7.jar 
aopalliance-1.0.jar 
c3p0-0.9.1.jar 
commons-logging-1.1.1.jar 
commons-pool-1.6.jar 
dom4j-1.6.1.jar 
hibernate-commons-annotations-3.2.0.Final.jar 
hibernate-commons-annotations-4.0.1.Final.jar 
hibernate-core-3.5.3-Final.jar 
hibernate-core-4.1.8.Final.jar 
hibernate-entitymanager-4.1.8.Final.jar 
hibernate-jpa-2.0-api-1.0.1.Final.jar 
hibernate-validator-4.0.2.GA.jar 
hibernate3.jar 
javassist-3.15.0-GA.jar 
javax.mail.jar 
jaxb-api-2.1.jar 
jaxb-impl-2.1.3.jar 
jboss-logging-3.1.0.GA.jar 
jboss-transaction-api_1.1_spec-1.0.0.Final.jar 
jpa-api-2.0-cr-1.jar 
jstl-1.2.jar 
junit-4.8.1.jar 
log4j-1.2.14.jar 
mysql-connector-java-5.1.25.jar 
mysql-connector-java-5.1.6.jar 
org.apache.commons.dbcp.jar 
org.springframework.orm.jar 
postgresql-8.4-701.jdbc4.jar 
servlet-api-2.5.jar 
slf4j-api-1.5.11.jar 
slf4j-api-1.6.1.jar 
slf4j-log4j12-1.5.11.jar 
spring-aop-3.0.2.RELEASE.jar 
spring-asm-3.0.2.RELEASE.jar 
spring-beans-3.0.2.RELEASE.jar 
spring-context-3.0.2.RELEASE.jar 
spring-context-support-3.0.2.RELEASE.jar 
spring-core-3.0.2.RELEASE.jar 
spring-expression-3.0.2.RELEASE.jar 
spring-jdbc-3.0.2.RELEASE.jar 
spring-orm-3.0.2.RELEASE.jar 
spring-tx-3.0.2.RELEASE.jar 
spring-web-3.0.2.RELEASE.jar 
spring-webmvc-3.0.2.RELEASE.jar 
stax-api-1.0-2.jar 
validation-api-1.0.0.GA.jar 

Ai đó có thể giúp tôi khắc phục sự cố này? Tôi chạy nó trong Eclipse với Tomcat 7.

Cảm ơn!

+0

Tại sao bạn có hai phiên bản 'mysql-connector-java' khác nhau (và nhiều thư viện khác)? Nhiều phiên bản thường là một ý tưởng tồi ... –

Trả lời

10

Bạn đã có những tên tài xế sai ở đây:

jdbc.driverClassName=com.mysql.jdbcDriver 

Nó nên là:

jdbc.driverClassName=com.mysql.jdbc.Driver 

Lưu ý . giữa jdbcDriver.

Cách để chẩn đoán những điều tương tự là nhìn vào lớp mà nó không thể tìm thấy:

Cannot load JDBC driver class 'com.mysql.jdbcDriver' 

Đó đã trông đáng ngờ như tên jdbcDriver không theo quy ước đặt tên Java. Vì vậy, tại thời điểm đó, bạn kiểm tra kỹ xem nó thực sự là gì - ví dụ: bằng cách tìm trong tệp jar - và sửa cấu hình.

Như đã lưu ý trong các nhận xét, tôi không nghĩ có nhiều phiên bản của cùng một tệp jar trên đường dẫn lớp - tôi không thể thấy kết thúc tốt.

+0

Cảm ơn. Lỗi ngu ngốc gì !! Nhiều phiên bản của cùng một tệp jar là do tôi đã thực hiện dự án và tôi đang thay đổi sang phiên bản/công nghệ khác ... –

0

Tôi gặp sự cố này và hóa ra là tệp .properties của tôi có một cặp "\ t \ t" ở cuối giá trị driverClassName. Nhưng khi lỗi sẽ in ra nó không hiển thị các tab. Tôi cuối cùng đã tìm thấy điều này khi tôi đi qua một chuyến đi gỡ lỗi dài dòng.

Vì vậy, nếu ai đó tìm thấy điều này trên SO và bạn đã có vấn đề trên, hãy kiểm tra tệp .prop của bạn, đảm bảo không có gì lạ ở cuối giá trị.

Các vấn đề liên quan