2013-12-07 39 views
0

我想升級一個項目到Tapestry 5.4,因爲我想使用Bootstrap。目前它使用帶MySQL的tapestry-hibernate 5.3.7。幾乎一切正常。但是,當我嘗試使用Hibernate時,它會顯示「找不到適用於jdbc:mysql:// localhost:3306/databaseName」的驅動程序。驅動程序找不到冬眠與掛毯5.4

現在,這個問題已被問及之前的答案是「驅動程序不在類路徑中」或「您輸入的網址是錯誤的」。但我絕對肯定地說,司機在那裏。它在戰爭檔案中。這是在pom.xml中的條目:

 <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.27</version> 
     </dependency> 

而且我絕對100%肯定我輸入正確的,因爲它使用Tapestry 5.3.7工作的網址。

我也試過手動添加驅動程序。另外,我嘗試了其他數據庫,並給出了相同的錯誤。我粘貼下面的堆棧跟蹤。查看java.sql.DriverManager.getConnection的源代碼,看起來它正在檢查驅動程序列表,但列表爲空。

[ERROR] hbm2ddl.SchemaUpdate HHH000299: Could not complete schema update 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/preparedMindDatabase 
    at java.sql.DriverManager.getConnection(DriverManager.java:596) 
    at java.sql.DriverManager.getConnection(DriverManager.java:187) 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192) 
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194) 
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:495) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1779) 
    at org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl.<init>(HibernateSessionSourceImpl.java:46) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:49) 
    at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) 
    at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) 
    at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) 
    at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) 
    at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) 
    at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) 
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) 
    at $HibernateSessionSource_61fa1b0ff12.delegate(Unknown Source) 
    at $HibernateSessionSource_61fa1b0ff12.create(Unknown Source) 
    at org.apache.tapestry5.internal.hibernate.HibernateSessionManagerImpl.<init>(HibernateSessionManagerImpl.java:31) 
    at org.apache.tapestry5.hibernate.modules.HibernateCoreModule.buildHibernateSessionManager(HibernateCoreModule.java:94) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:51) 
    at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) 
    at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:60) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.services.PerThreadServiceCreator.createObject(PerThreadServiceCreator.java:47) 
    at $HibernateSessionManager_61fa1b0ffd3.delegate(Unknown Source) 
    at $HibernateSessionManager_61fa1b0ffd3.getSession(Unknown Source) 
    at $HibernateSessionManager_61fa1b0ff4e.getSession(Unknown Source) 
    at $Session_61fa1b0ffd2.readProperty(Unknown Source) 
    at $Session_61fa1b0ffd2.createCriteria(Unknown Source) 
    at $Session_61fa1b0fef9.createCriteria(Unknown Source) 
    at com.salsaberries.preparedmind.pages.Register.advised$onSuccess_61fa1b0ffbf(Register.java:57) 
    at com.salsaberries.preparedmind.pages.Register$Invocation_onSuccess_61fa1b0ffbe.proceedToAdvisedMethod(Unknown Source) 
    at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84) 
    at org.apache.tapestry5.internal.hibernate.CommitAfterWorker$1.advise(CommitAfterWorker.java:53) 
    at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) 
    at com.salsaberries.preparedmind.pages.Register.onSuccess(Register.java) 
    at com.salsaberries.preparedmind.pages.Register.dispatchComponentEvent(Register.java) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:942) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1127) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:62) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1072) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1069) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:145) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1068) 
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:302) 
    at org.apache.tapestry5.corelib.components.Form.onAction(Form.java:526) 
    at org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:942) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1127) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:62) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1072) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1069) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:145) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1068) 
    at org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:75) 
    at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) 
    at $ComponentEventRequestHandler_61fa1b0ffd1.handle(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$37.handle(TapestryModule.java:2202) 
    at $ComponentEventRequestHandler_61fa1b0ffd1.handle(Unknown Source) 
    at $ComponentEventRequestHandler_61fa1b0ff5c.handle(Unknown Source) 
    at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) 
    at org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:55) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:52) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:107) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:100) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1117) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker.handleComponentEvent(RequestOperationTracker.java:47) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at com.salsaberries.preparedmind.filters.HTTPHeaderFilter.handleComponentEvent(HTTPHeaderFilter.java:46) 
    at $ComponentRequestFilter_61fa1b0ff5b.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at com.salsaberries.preparedmind.filters.SecurityFilter.handleComponentEvent(SecurityFilter.java:62) 
    at $ComponentRequestFilter_61fa1b0ff5a.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff23.handleComponentEvent(Unknown Source) 
    at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) 
    at $Dispatcher_61fa1b0ff26.dispatch(Unknown Source) 
    at $Dispatcher_61fa1b0ff20.dispatch(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:300) 
    at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:845) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:835) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at $RequestHandler_61fa1b0ff17.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:251) 
    at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) 
    at $HttpServletRequestFilter_61fa1b0ff14.service(Unknown Source) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:795) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at $HttpServletRequestHandler_61fa1b0ff13.service(Unknown Source) 
    at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 

編輯:這裏是hibernate配置:

<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/preparedMindDatabase</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">*******</property> 
    <property name="hbm2ddl.auto">update</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 
    <property name="hibernate.generate_statistics">true</property> 

</session-factory> 

回答

-1

看一看方法java.sql.DriverManager中的#的getConnection其中拋出異常,似乎它是兩種可能性之一:

  1. 驅動程序沒有註冊。現代驅動程序在加載類時會自動註冊

  2. 驅動程序自己註冊,但它不會被調用方的類加載器看到,因此它會被跳過。

我會建議穿上java.lang.DriverManager中#的getConnection和java.lang.DriverManager中的#registerDriver一些斷點,看看是怎麼回事。

奇怪的是爲什麼它以前工作。通常我們應該將驅動程序放在$ TOMCAT_HOME/lib中,請參閱this post。在那裏它總是可見的應用程序的任何部分,並防止多次註冊驅動程序。

嘗試從WAR中刪除驅動程序,並確保它位於$ TOMCAT_HOME/lib中。如果它不起作用,您可以隨時編輯問題並提供進一步的調查結果,希望它有所幫助。

+0

問題是,Tomcat仍然加載舊的驅動程序,當我更新到新的驅動程序,它也試圖加載,這是導致一些衝突。按照您的建議將驅動程序放在$ TOMCAT_HOME/lib中並將其從WAR中清除(並清除tomcat webapps文件夾)解決了問題,謝謝! – user3078384

0

hibernate jars在哪裏?也許你有一些奇怪的情況,即bootstrap類加載器加載了hibernate,但是由war classloader加載了驅動程序。

+0

這很有趣,這裏並不是這樣,但升級時可能會導致同樣的問題。 – user3078384