Java 即使在构建路径中有ojdbc14.jar,Class.forName(";oracle.jdbc.driver.OracleDriver";)也会得到ClassNotFoundException

Java 即使在构建路径中有ojdbc14.jar,Class.forName(";oracle.jdbc.driver.OracleDriver";)也会得到ClassNotFoundException,java,tomcat,servlets,jdbc,classloader,Java,Tomcat,Servlets,Jdbc,Classloader,我正在尝试用java和oracle10g制作一个servlets应用程序,到目前为止,我已经做得很好了,直到我需要数据库中的一些特定值,因为我有一个DAO类来处理检索数据的连接。我有以下问题 首先,我在这个类中执行了一个main()方法,该方法用于检索某个表中的所有条目,并在控制台中打印每个条目的名称。我做得很好 然后我想返回所有这些名称的ArrayList,以便在servlet中使用它们。因此,我创建了一个类似于main()中的方法,唯一的区别是,我没有打印名称,而是将每个名称添加到一个Arr

我正在尝试用java和oracle10g制作一个servlets应用程序,到目前为止,我已经做得很好了,直到我需要数据库中的一些特定值,因为我有一个DAO类来处理检索数据的连接。我有以下问题

首先,我在这个类中执行了一个
main()
方法,该方法用于检索某个表中的所有条目,并在控制台中打印每个条目的名称。我做得很好

然后我想返回所有这些名称的ArrayList,以便在servlet中使用它们。因此,我创建了一个类似于
main()
中的方法,唯一的区别是,我没有打印名称,而是将每个名称添加到一个ArrayList中,该ArrayList在关闭连接后返回。好的,它在
Class.forName(“oracle.jdbc.driver.OracleDriver”)

如果有帮助,我将在教程中学习如何将java应用程序连接到oracle数据库


如果您有任何帮助,请将
ojdbc14.jar
放在WEB-INF/lib/目录下的war文件中。您可以使用ANT来实现这一点。如果您不熟悉ANT,您可以将jar文件复制到项目下的
WEB-INF/lib/
目录中,然后使用Windows资源管理器或
WinZip
或任何其他适合您的工具对其进行压缩。然后将.zip文件重命名为.war并部署到Tomcat服务器上

如果需要一些快速修复,只需将
ojdbcjar
文件复制到tomcat下的
server/lib
目录,然后重新启动tomcat。它应该会起作用


编辑:请参阅下面的评论。虽然我个人没有看到web app classloader中JDBC驱动程序出现任何意外行为,但建议将驱动程序jar保存在服务器库下。

如何确保JDBC jar位于我们的类路径中?在eclipse中的项目属性、Java构建路径选项、库选项卡中,其显示“ojdbc14.jar-/lib“也检查一下战争内容。好的。。。这场战争根本就没有罐子。我如何把它们放在那里呢?永远不要把数据库驱动程序放在webapp类加载器中!只在服务器类加载器中。@Michael为什么不?如果您需要从不同的web应用程序支持不同的版本,那么您将需要放入各个web应用程序中。你能解释更多吗?Tomcat用户邮件列表中已经讨论过好几次了,但其中一个原因是
DriverManager
不知道类加载器层次结构,你可能最终会出现未定义的行为。请仔细查看邮件列表。