最近在IDEA中用JDBC连接PostgreSQL数据库时遇到了这样一个奇怪的事情:
从PostgreSQL JDBC Driver官网下载好JDBC驱动之后,在IDEA的Project Structure的Modules中已经添加好jar包的依赖,并且在普通的Java类(自己封装的数据库工具类)中能够成功的连接上数据库,也能从里面读取数据。
但是,正当咱连接上数据库而高兴的时候,悲剧悄然来临。如果在servlet中调用自己编写数据库工具类进行数据库连接,就会出现如下图所示的错误,然后自动断开与tomcat服务器的连接。
这是什么原因呢,调试之后,咱发现就是在跳转到数据库工具类中进行postgis数据库连接时出错,而出错时会提示java.lang.ClassNotFoundException: org.postgresql.Driver
这就相当明显了,就是web应用没有找到我们的JDBC Driver。我们的servlet只会加载到web项目的目录(webapp或WebRoot目录)里面的jar包。这比较让人疑惑,但事实就是这样,我们添加的jar包没有被web应用加载到。
那如何解决呢?只需要在自己web项目根目录(webapp或者WebRoot等)下的WEB-INF目录中添加lib文件夹,将其添加到依赖。然后吧需要的数据库驱动jar包放到该目录下即可。
我在的另一篇博客中也提到过,/WEB-INF/lib/ 这个目录一般放置仅在这个web应用中用到的jar文件,例如数据库驱动jar文件(我们链接postgis数据库时就用到)。
这样,我们在servlet中就能够连接数据库,愉快地读取数据了。