我在Tomcat遇到了一个可怕的问题,因为这个问题很可怕我已经把这个项目扔了一个多月了......但是我仍然需要解决它并继续这个项目。 ..
所以它给我这个错误:
java.sql.SQLException:找不到合适的jdbc驱动程序:sqlserver://isd.ktu.lt:1433; DatabaseName = LN2012_bakDB2 显示java.lang.NullPointerException
问题是相同的应用程序在桌面版本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 ...... 事情是我讨厌这样的错误...如果你在三天内没有解决它,你会感到非常沮丧,不想再回到那里,你感觉就像撞墙... 现在我尝试了很多关于它的谷歌搜索,但它仍然没有多大的帮助...... 如果有人可以帮助我,我会很高兴。谢谢。 :)
答案 0 :(得分:3)
您必须将JDBC驱动程序的jar复制到$ CATALINA_HOME / lib。
答案 1 :(得分: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文件。它们可见的类和资源解释如下:
Bootstrap :此类加载器包含JVM提供的基本运行时类,以及System Extensions目录 $JAVA_HOME/jre/lib/ext
中存在的JAR文件中的任何类。
系统:此类加载器通常是从 CLASSPATH
环境变量的内容初始化的。 Tomcat内部类和Web应用程序都可以看到所有这些类。但是,Tomcat有一些例外。
Common :此类加载器包含对Tomcat内部类和所有Web应用程序都可见的其他类。此类加载器(默认情况下)在jar文件的 $CATALINA_BASE/lib
和 $CATALINA_Home/lib
中查找。
Webapps :为部署在单个Tomcat实例中的每个Web应用程序创建一个类加载器。 Web应用程序的 /WEB-INF/classes
目录中的所有解压缩的类和资源,以及Web上 /WEB-INF/lib
目录下的JAR文件中的类和资源应用程序,对此Web应用程序可见,但不对其他应用程序可见。
ojdbc
JAR文件放在$JAVA_HOME/jre/lib/ext
JDBC驱动程序中,将在Bootstrap级别显示。 答案 2 :(得分:0)
我也遇到了同样的问题。这是因为您的tomcat服务器没有jar
的{{1}}文件。我通过将JDBC
文件复制到tomcat服务器中的JAR
文件夹中解决了该问题。
答案 3 :(得分:0)
这有助于我将 mssql-jdbc-9.2.1.jre8.jar 文件复制到 C:\Java\jdk1.8.0_291\jre\lib\ext 文件夹中。