Tomcat错误:java.sql.SQLException:没有找到适合jdbc的驱动程序:sqlserver://
我有一个可怕的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搜索很多,但仍然没有太多的帮助... 所以我会真的很高兴有人能帮助我。谢谢。 :)
您必须将JDBC驱动程序的jar复制到$ CATALINA_HOME/lib中。
嗨,我在哪里可以找到Catalina_home/lib?这也是一个问题,我用google搜索过这个文件夹,但是我的Tomcat似乎没有该文件夹?我在哪里找到它? – 2012-07-09 11:06:57
现在它在: C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib Apache正在使用tomcat的这个文件夹,并且sqlijdbc4.jar在那里。 – 2012-07-09 11:16:24
如果通过以下方式替换数据库地址,会发生什么情况:jdbc:microsoft:sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 – mabbas 2012-07-09 12:36:43
这可能来不及回答这个问题,但为了解决类似的问题,下面是我如何解决这个问题。
快速解决方案:
复制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/ext
的ojdbc
JAR文件JDBC驱动程序,会得到看得见的引导水平。
请显示堆栈跟踪! – home 2012-07-08 11:55:39
位于Tomcat目录中的数据库驱动程序(例如sqljdbc4.jar)在哪里? – 2012-07-08 19:10:46
@MartinWilson它位于C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib – 2012-07-09 11:17:53