将jar放到 $TOMCAT_HOME$\common\lib 下

解决方案 »

  1.   

    我的本意是说为什么第一次放在应用的lib下是可以运行的.为什么非得放到 $TOMCAT_HOME$\common\lib 下?
      

  2.   

    因为你在环境变量里设了CLASSPATH的路径是$TOMCAT_HOME$\common\lib 
      

  3.   

    common 就是  Tomcat 和你的程序都用的“公用”库,因为连接池是 Tomcat 管理,他在你的程序启动之前就加载 资源,
    这个时候你的程序的加载器还未启动,而且即使启动了,父级 类加载器也无法访问 子级 加载器加载的资源, 这样  服务器就无法找到类库, 因为 驱动被子级 类加载器加载,服务器却无法访问。子级 类 加载器 却能访问 父类加载器加载 的资源 ,看一下 Tomcat 类加载器层次 的文章,一篇就明白。
      

  4.   

    把classpath中的$TOMCAT_HOME$\common\lib去掉,然后仍旧把那些jdbc驱动包放到你的工程文件的lib下就可以了