Java DriverManager不加载Mysql驱动程序
DriverManager
static {
loadInitialDrivers();
println("JDBC DriverManager initialized");
}
Mysql jdbc驱动程序位于Tomcat库下。
tomcat/lib/mysql-jdbc.jar
从调试器,在调用DriverManager.getDriver(URL)之前,断点是 在方法loadInitialDrivers()中设置,但执行不会在那里停止。这是静态方法,当加载类时,静态方法被调用?
已加载的驱动程序列表(registeredDrivers
)为空。
将ojdbc6.jar添加到tomcat / lib中,然后重启tomcat。 DriverManager没有 加载驱动程序。可能是什么问题?似乎tomcat忽略了tomcat / lib目录下的所有JDBC jar。
还尝试过:将jdbc驱动程序复制到webapps / myapp / WEB-INF / lib,它没有帮助。
答案 0 :(得分:0)
从一个简单的Java应用程序运行SQL与从像Tomcat这样的JEE服务器运行SQL完全不同(至少......半个JEE服务器)。
不要使用static
初始值设定项。相反,JEE(Java企业版)以不同的方式做到了不同的原因:
在Tomcat中,您不需要“加载”驱动程序。只需将其放在TOMCAT_HOME/lib
中并重新启动Tomcat即可。而已。驱动程序已加载。在Tomcat日志开始时看到它,你会看到它。 Tomcat(就像任何JEE服务器一样)负责加载它。
然后,您需要做的是创建JDBC数据源。关于如何做到这一点有很多例子。您可以通过修改conf / server.xml文件并重新启动Tomcat来完成此操作。确保为数据源提供您记住的名称;你将在下一步使用它。在启动时再次查看Tomcat的日志文件,您将看到正在注册/创建的全新数据源。
接下来,在您的JEE代码中,使用您在上一步中配置的名称从JNDI目录中检索数据源,并使用它来创建Connection
。同样,有很多关于如何做到这一点的例子。
最后,使用Connection
,您可以运行所需的所有SQL语句。这是你已经熟悉的部分。按照通常的方式进行。