2012-07-07 139 views
2

我有一个可怕的Tomcat问题,因为这个问题非常糟糕我已经抛弃了一个多月的项目......然而,我仍然需要去解决它,并与项目去......Tomcat错误:java.sql.SQLException:没有找到适合jdbc的驱动程序:sqlserver://

所以它抛出我这个错误:

值java.sql.SQLException:找到了JDBC没有合适的驱动程序: sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 java.lang.NullPointerException

问题是同一个应用程序在deskto中工作p版本perfectlz,但是当涉及到应该在服务器上运行的版本(NetBeans 7.1.2中的Tomcat 7.0.22.0)时,它只会引发错误。现在看来,这不加载的驱动程序池还是我甚至不知道......

那么这里的负责的部分:

public DatabaseConnection(Parameters params) {     

    // parameters and the output     
    this.gui = params.getGui(); 

    // activate database pool 
    connectionPool = new GenericObjectPool(null); 
    connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass()); 
    poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); 
    driver = new PoolingDriver(); 
    driver.registerPool("GenTreeDatabase", connectionPool); 
    //driver.registerPool("jdbc:apache:commons:dbcp:GenTreeDatabase", connectionPool);   

} 

public void openConn() { 
    if (allowOutput) gui.print("Getting connection to database"); 
    try { 
     con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase"); 
     if (con != null) { 
      if (allowOutput) gui.print("Connection to database was successful"); 
     } 
    } catch (SQLException ex) { 
     gui.err(specificError + "Error getting connection to database - " + ex); 
    } 
} 

它发生在它尝试获取点连接,那么它会得到一个空指针异常,因为连接不会被成功检索。

我对Tomcat并不熟悉,直到现在,Netbeans处理了tomcat罚款... 事情是我讨厌这样的错误...如果你在三天内没有解决它,沮丧,不想回到那个,你觉得打墙... 现在我试着用google搜索很多,但仍然没有太多的帮助... 所以我会真的很高兴有人能帮助我。谢谢。 :)

+0

请显示堆栈跟踪! – home 2012-07-08 11:55:39

+1

位于Tomcat目录中的数据库驱动程序(例如sqljdbc4.jar)在哪里? – 2012-07-08 19:10:46

+0

@MartinWilson它位于C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib – 2012-07-09 11:17:53

回答

2

您必须将JDBC驱动程序的jar复制到$ CATALINA_HOME/lib中。

+0

嗨,我在哪里可以找到Catalina_home/lib?这也是一个问题,我用google搜索过这个文件夹,但是我的Tomcat似乎没有该文件夹?我在哪里找到它? – 2012-07-09 11:06:57

+0

现在它在: C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib Apache正在使用tomcat的这个文件夹,并且sqlijdbc4.jar在那里。 – 2012-07-09 11:16:24

+0

如果通过以下方式替换数据库地址,会发生什么情况:jdbc:microsoft:sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 – mabbas 2012-07-09 12:36:43

0

这可能来不及回答这个问题,但为了解决类似的问题,下面是我如何解决这个问题。

快速解决方案:

复制JDBC-driver JAR file我的是ojdbc6)为$JAVA_HOME/jre/lib/ext对我来说是C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext)。

详情:

根据Apache Tomcat 7 documentations当Tomcat启动时,它创建了一组类加载器在组织成以下的父子关系:

 Bootstrap 
     | 
     System 
     | 
     Common 
    / \ 
Webapp1 Webapp2 ... 

每班加载程序,特定目录内搜索JAR文件。他们做出可见类和资源的解释如下:

引导:这个类装载器包含了从系统中存在的Extensions目录$JAVA_HOME/jre/lib/ext JAR文件由JVM提供的基本运行时类,以及任何类。

系统:该类加载器通常从CLASSPATH环境变量的内容进行初始化。所有这些类对于Tomcat内部类和Web应用程序都是可见的。但是,Tomcat有一些例外。

Common:该类加载器包含额外的类,这些类对Tomcat内部类和所有Web应用程序均可见。此类加载器看起来(默认情况下)为$CATALINA_BASE/lib$CATALINA_Home/lib对于jar文件。

Web应用程序:为每个部署在单个Tomcat实例中的Web应用程序创建一个类加载器。您的Web应用程序的目录中的所有未解压缩的类和资源,以及您的Web应用程序的目录下的JAR文件中的类和资源,都使这个Web应用程序可见,但不会显示其他应用程序。

  • 总之,买把里面$JAVA_HOME/jre/lib/extojdbc JAR文件JDBC驱动程序,会得到看得见的引导水平。
相关问题