Краткое описание: Tomcat6 не может распознать мой файл ojdbc14.jar в WebRoot / WEB-INF / lib.Я полагаю, мне не нужно ничего настраивать, просто поместив туда файл .jar, и он должен работать.
Подробности:
Я создал вебприложение и поместите ojdbc14.jar в папку WEB-INF / lib.Когда я запускаю Tomcat6 и обращаюсь к странице index.jsp, которая создает объект, который инициирует соединение с моей базой данных oracle , возникает ошибка, говорящая "Не удается загрузить класс драйвера JDBC 'oracle.jdbc.OracleDriver'".Очевидно, Tomcat6 не может распознать класс 'oracle.jdbc.OracleDriver' в web-inf / lib / ojdbc14.jar .
Я провел некоторое исследование и предположил следующие причины:
- Tomcat6 имеет несколько различных способов загрузки классов.Они меняют его в каждой выпущенной версии.Или
- В Tomcat6 есть ошибка.Я обнаружил похожую ошибку в Tomcat3 (см. Здесь https://bugs.eclipse.org/bugs/show_bug.cgi?id=249044). Но я сомневаюсь, что эта ошибка может продолжаться для стольких версий.
- Tomcat6 уже включил содержимое ojdbc14.jar в свой собственный файл lib, и естьконфликт, добавив его в web-inf / lib еще раз. Я не верю этому, потому что после удаления ojdbc14.jar из WEB-INF / lib проблема сохраняется.
Вот мой вебструктура приложения:
- WebRoot
- WEB-INF
- классы
- 'Класс для инициирования соединения'
- lib
- index.jsp
Ошибка:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at com.demo6.DataSourceExample.getConnection(DataSourceExample.java:18)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:63)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760)
... 21 more