2013-03-26 39 views
3

這是最多的主題之一,但沒有其他的stackoverflow適合。SQLException:沒有合適的驅動程序找到

我的環境是一個Tomcat 7,它在context.xml中定義了一個JNDI-DataSource。當我啓動我的Tomcat時,拋出以下異常

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.ClientDataSource' for connect URL 'jdbc:derby://localhost:1527/app;create=true' 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141) 
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 
at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52) 
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367) 
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304) 
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293) 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:498) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1743) 
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) 
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) 
at com.opensolutions.openflow.persistence.DefaultEntityManagerStore.<init>(DefaultEntityManagerStore.java:20) 
at com.opensolutions.openflow.servlet.ApplicationWebserviceServlet.initApplication(ApplicationWebserviceServlet.java:38) 
at com.opensolutions.openflow.servlet.ApplicationWebserviceServlet.loadBus(ApplicationWebserviceServlet.java:27) 
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:71) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) 
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
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:722) 

Caused by: java.sql.SQLException: No suitable driver 
at java.sql.DriverManager.getDriver(DriverManager.java:289) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437) 
... 37 more 

任何解決方案?我不知道。我嘗試了這麼多,但沒有任何工作。

+0

您正在使用什麼數據庫? – 2013-03-26 23:06:51

+0

我正在使用DerbyDB 10.9.1.0 – 2013-03-27 08:36:23

+0

向我們展示DataSource的定義,似乎您配置了錯誤的* driver *類,因爲'org.apache.derby.jdbc.ClientDataSource'不是名稱Derby的JDBC驅動程序。 – 2013-03-27 10:57:02

回答

1

此行的堆棧跟蹤的關鍵是解決問題:

Caused by: java.sql.SQLException: No suitable driver 

由於異常在org.apache.tomcat...拋出似乎你還沒有放置在您的數據庫驅動程序在Tomcat的lib目錄(即你缺少依賴關係)。該文件夾存儲您的應用程序所需的外部依賴關係,位於apache-tomcat-version/lib/。您需要將驅動程序提供給Web應用程序和Tomcat服務器。

而且,看看這些相關quetions:

  1. JDBC/MSQL: No suitable driver found
  2. Cause of No suitable driver found
  3. java.sql.SQLException: No suitable driver found


編輯

問題可能是webapp沒有access to the library,請嘗試在tomcat-home-folder/common/lib中添加庫。我想這和tomcat7沒有一個共同文件夾,所以我反而放在函數庫爲web應用/ WEB-INF/lib目錄

+0

看看這個:http://img560.imageshack.us/img560/1711/tomcatlib.png我也使用maven,並且在我的webapp-war-folder中也是這個JDBC類驅動程序:(我檢查了我的URL: 'jdbc:derby:// localhost:1521/app; create = true'我不知道誰能解決這個問題...我已經閱讀了你建議給我的所有主題:( – 2013-03-27 08:38:45

+0

@GeorgeKrause請看看我的編輯。 – 2013-03-27 10:31:07

0

我有一個不正確的JDBC URL是這樣的:

錯!

jdbc:jtds://myserver:port;databaseName=abc 

正確:

jdbc://myserver:port;databaseName=abc 

(除去jtds:部分...)

相關問題