JaPark Bug World

[Java/mac]java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver 본문

bug world/Java Error

[Java/mac]java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver

JAstory 2024. 4. 19. 23:06

백앤드를 배운다고 요즘.. 고생하는 내 맥북인지 내 뇌인지 이제 알수가 없다. 여튼 jsp 실습중에 자바에서 DB에 접근할 수 있도록 도와주는 드라이버인 jdbc라는게 있다. 열심히 코드를 뙇 치자마자 아주 근사하게 exception을 맞이했다.

 

java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1141)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at me.japark.pro07.MemberDAO.connDB(MemberDAO.java:53)
at me.japark.pro07.MemberDAO.listMembers(MemberDAO.java:15)
at me.japark.pro07.MemberServlet.doGet(MemberServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:840)

 

oracle.jdbc.OracleDriver를 찾을 수 없다고 한다. 아놔........ 이것때문에 오늘 몇시간을 날렸는지 모른다.

여튼 해결방안은 이랬다.

 

1. 일단 오라클 버전에 맞는 드라이버를 다운로드 받는다.

jdk 버전에 따라 드라이버 버전이 다르니 확인이 필요하다.

https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html

 

JDBC and UCP Downloads page

Oracle JDBC Driver Implements JDBC 4.2 spec and certified with JDK8, JDK11, JDK17, and JDK19 Oracle JDBC driver except classes for NLS support in Oracle Object and Collection types. (4,529,624 bytes) - (SHA1: 3f88f445f077ba486d8d8a4471f2a068d65b66cb)

www.oracle.com

 

2. 맥북 같은 경우는 톰캣이 설치된 라이브러리 경로안에 다운로드 받은 ojdbc.jar를 넣어줘야 한다. 나는 홈브루를 통해 톰캣을 설치했고 파일 경로는 /opt/homebrew/Cellar/tomcat@9/9.0.87/libexec/lib 이다. lib 폴더 안에 넣어주고 실행 시키니까.. 너무 잘된다..

ㅜㅜㅜㅜㅜㅜ