【问题标题】:Dbutils error: java.sql.SQLException: net.sourceforge.jtds.jdbc.DriverDbutils 错误:java.sql.SQLException:net.sourceforge.jtds.jdbc.Driver
【发布时间】:2014-01-03 06:28:20
【问题描述】:

我正在使用 jtds 包中的 net.sourceforge.jtds.jdbc.Driver 驱动程序实现 Dbutils。

问题是即使在项目中包含jtds jar 之后,它也会给我java.sql.SQLException: net.sourceforge.jtds.jdbc.Driver 错误。当我将这个jtds jar 文件包含在 tomcat 的 lib 文件夹中时,它工作正常。

我检查了构建代码,jtds jar 文件存在那里。

java.sql.SQLException: net.sourceforge.jtds.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
at com.cibil.crs.escalationmatrix.dbutil.DataSourceFactory.createDataSource(DataSourceFactory.java:46)
at com.cibil.crs.escalationmatrix.dbutil.DataSourceFactory.createDataSource(DataSourceFactory.java:17)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1093)
at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:672)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:271)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
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.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)

有什么想法吗?

【问题讨论】:

  • 不是ClassNotFoundException,而是SQLException。请提供完整的堆栈跟踪。
  • 你能发布完整的堆栈跟踪吗?它与 Classpath 问题无关
  • 添加了堆栈跟踪。谢谢
  • 我认为您正在使用 Eclipse 开发 Web 应用程序,对吧?您将 jtds.jar 放在项目中的什么位置?
  • 似乎 jtds jdbc 驱动程序不在类路径中。确保 jtds jdbc 驱动程序位于运行时类路径中。您使用的是哪个 IDE?

标签: java sql-server jdbc jtds


【解决方案1】:

您正在使用连接池并且正在使用 tomcat。请参阅下面的链接,并注意“要使用的 JDBC 驱动程序的完全限定 Java 类名。该驱动程序必须可从与 tomcat-jdbc.jar 相同的类加载器访问”。

https://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2013-01-30
    • 2012-02-03
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多