2013-07-28 19 views
5

Próbuję skonfigurować webapkę Java MVC z Spring i Hibernate oraz bazą danych MySQL, ale gdy uruchamiam serwer Mam ten błąd i nie wiem, na czym polega problem.BŁĄD: org.hibernate.util.JDBCExceptionReporter - Nie można załadować klasy sterownika 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 

Nie wiem, gdzie może być błąd. To jest mój applicationContext.xml. Błąd wydaje się być w komponencie bean danych.

<?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> 

a to mój jdbc.properties

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 

mam cały ten słoik, aby załadować klas. Coś z nich (jak jpa-api.jar) Myślę, że to nie jest konieczne, a inne są powtarzane, ale miałem je w innym projekcie, od którego zaczynam to robić, a jeszcze go nie usunąłem:

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 

Ktoś może mi pomóc w tym kłopocie? Uruchomiłem go w Eclipse z Tomcat 7.

Dzięki!

+0

Dlaczego masz dwie różne wersje 'mysql-connector-java' (i różnych innych bibliotek)? Wiele wersji jest generalnie złym pomysłem ... –

Odpowiedz

10

masz źle nazwa sterownika tutaj:

jdbc.driverClassName=com.mysql.jdbcDriver 

Powinno być:

jdbc.driverClassName=com.mysql.jdbc.Driver 

Zanotuj . między jdbc i Driver.

Sposób diagnozowania podobnych rzeczy jest spojrzenie na klasy, że nie można znaleźć:

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

To już wygląda podejrzane jak sama nazwa jdbcDriver nie następują Java konwencje nazewnictwa. W tym momencie dokładnie sprawdź, co naprawdę powinno być - np. patrząc w pliku JAR i naprawiając konfigurację.

Jak wspomniano w komentarzach, nie wydaje mi się, że dobrym pomysłem jest posiadanie wielu wersji tego samego pliku jar w ścieżce klasy - nie widzę tego dobrze.

+0

Dzięki. Co za głupi błąd !! Wiele wersji tego samego pliku jar wynika z tego, że wykonałem projekt i zmieniam się na inną wersję/technologię ... –

0

Miałem ten problem i okazało się, że mój plik .properties miał parę "\ t \ t" na końcu wartości klasy driverClassName. Ale kiedy błąd byłby wydrukowany, nie wyświetlał kart. W końcu znalazłem to, gdy przechodziłem długą wędrówkę debugującą.

Jeśli więc ktoś znajdzie to na SO i masz powyższy problem, sprawdź plik .prop, upewnij się, że na końcu wartości nie ma nic dziwnego.

Powiązane problemy