2016-06-30 6 views
1

Eclipse에 내 mysql 데이터베이스에 대한 연결을 사용하는 webproject가 있습니다.Tomcat에 프로젝트를 배포 한 후 com.mysql.jdbc.Driver를 찾을 수 없습니다.

프로젝트를 .WAR-File로 내 보낸 다음 다른 컴퓨터에 tomcat 서버에 배포했습니다. 그 머신에는 mysql-database도있다. 은 "LIB WEB-INF /"에서

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:153) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:830) 
    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.naming.SelectorContext.lookup(SelectorContext.java:156) 
    at javax.naming.InitialContext.lookup(InitialContext.java:411) 
    at bachelor.Cronjob.run(Cronjob.java:63) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThr$ 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPool$ 
    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:278) 
     at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246) 
     ... 29 more 

- :

envContext = new InitialContext(); 
DataSource ds = (DataSource) envContext.lookup("java:comp/env/jdbc/Database"); 
con = ds.getConnection(); 

내의 context.xml :

나는이 할

<Resource name="jdbc/Database" auth="Container" 
     type="javax.sql.DataSource" 
     maxActive="100" maxIdle="30" maxWait="10000" 
     username="user" 
     password="pw" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/databasename"/> 

그러나 나는이 오류 폴더 'mysql-connector-java-5.1.35-bin.jar'가 있습니다.

누군가가 이클립스에서는 작동하지만 다른 컴퓨터에서는 바람둥이에서는 작동하지 않는 이유를 알고 있습니까? 고마워!

+0

예외의 원인이 된 정확한 코드는 무엇입니까? 더 많은 스택 추적을 포함시킬 수 있습니까? –

+0

@TimBiegeleisen : 내 편집 내용을 참조하십시오. – progNewbie

+0

'.war' 파일을'zip' 추출 도구로 열고'mysql-connector.jar' 파일로 구성되어 있는지 확인하십시오. 그것이 없다면 문제가 될 수 있습니다. 오류 로그에 mysql 연결에 해당 클래스가 없습니다. – Shashanth

답변

2

Context.xml에 정의 된 JNDI 데이터 소스를 사용하는 경우 DB 드라이버는 $CATALINA_HOME/lib이어야합니다. 즉, WEB-INF/lib에 있으면 충분하지 않습니다.

(일부 톰캣 설치 다른 CATALINA_HOMECATALINA_BASE, 그래서 당신이이 -Dcatalina.home=... 옵션을 찾기 위해 다음 ps axwww | grep -i catalina 명령을 실행하는 것입니다 및 위치를 찾기 위해 적절한 lib 폴더, 다음 아마도 가장 쉬운 방법을 찾을 수없는 경우.)

관련 문제