2013-12-07 37 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