开发者社区> 问答> 正文

ubuntu tomcat出现java.lang.ClassNotFoundEx?报错

先贴报错:

十二月 07, 2014 10:14:29 下午 org.apache.tomcat.jdbc.pool.ConnectionPool init
严重: Unable to create initial connections of pool.
java.sql.SQLException: com.mysql.jdbc.Driver
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
	at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
	at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:554)
	at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:242)
	at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
	at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:842)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:830)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
	at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1091)
	at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:670)
	at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:269)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:274)
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
	... 32 more

十二月 07, 2014 10:14:29 下午 org.apache.naming.NamingContext lookup
警告: Unexpected exception resolving reference
java.sql.SQLException: com.mysql.jdbc.Driver
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
	at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
	at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
	at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:554)
	at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:242)
	at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
	at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:842)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:830)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
	at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1091)
	at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:670)
	at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:269)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:274)
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
	... 32 more



ubuntu直接从软件源装的tomcat7,apt-get install tomcat7

启动tomcat的时候发现报错
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
查看了一下/var/lib/tomcat7/webapps/app/WEB-INF/这个目录,是有mysql-connector-java-5.1.20-bin.jar这个jar包的,但是不知道为什么启动就报错找不到mysql jdbc。

我试着从apache网站上下载tomcat的,tar.gz包,把app.war扔进去部署,没有一点问题,根本不报这个错误。抱着不死心的态度,我试着把mysql jdbc拷贝到tomcat的lib下/usr/share/tomcat7/lib,重启tomcat,神奇的发现这个问题消失了。

实在想不明白为什么,ubuntu的tomcat到底用了什么黑科技,WEB-INF/lib下那么多jar包,唯独报mysql jdbc找不到,别的jar包都能正常加载。

展开
收起
爱吃鱼的程序员 2020-06-14 19:03:54 952 0
2 条回答
写回答
取消 提交回答
  • 码中自由一片天地。。。

    这个怎么解决的呢?

    2022-11-21 14:30:26
    赞同 展开评论 打赏
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你的tomcat配置了数据库连接池了吧,即在server.xml中配置的
    diff对比了一下,除了端口问题别的没不一样,又搜索了一下关键字,mysql,jdbc,pool都搜索了,没有……你提醒我了,我这就去看一下server.xml。我用的是默认配置,直接启动的。你提醒我了,ubuntu打包的tomcat和官方的配置不一样,以前我就注意到server.xml这个文件ubuntu的tomcat默认是不开启ajp13端口的。准备再比对一下看看不是放在<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">/WEB-INF/下的lib?嗯,是在WEB-INF/lib<imgsrc="http://www.oschina.net/js/ke/plugins/emoticons/images/5.gif"alt=""> 我以前也遇到了这个问题,mysql的jar包不能加载。https://scottlinux.com/2014/02/20/tomcat-on-debian-and-ubuntu-linux-fix-broken-com-mysql-jdbc-driver-connection/google到一个,说是ubuntu的tomcat打包有问题

    2020-06-14 19:04:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载