Java Eclipse:导出的库无法实例化oracle驱动程序ojdbc.jar

Java Eclipse:导出的库无法实例化oracle驱动程序ojdbc.jar,java,eclipse,oracle,jar,Java,Eclipse,Oracle,Jar,我有一个库,其中包含要连接到oracle数据库的功能。当我导出这个库(作为一个JAR)并在主项目中使用它时,在用class.forname加载驱动程序时会出现异常。它显然找不到ojdbc驱动程序。我将此驱动程序包含在构建路径和导出库中 我直接从主项目测试并使用了驱动程序,它可以工作,它可以连接到oracle db 谢谢 问题在于,您的驱动程序是一个jar文件,当您将应用程序导出为jar文件时,该驱动程序将是jar文件中的一个jar文件。对于这种情况,您需要一个特殊的类加载器,或者将驱动程序jar

我有一个库,其中包含要连接到oracle数据库的功能。当我导出这个库(作为一个JAR)并在主项目中使用它时,在用class.forname加载驱动程序时会出现异常。它显然找不到ojdbc驱动程序。我将此驱动程序包含在构建路径和导出库中

我直接从主项目测试并使用了驱动程序,它可以工作,它可以连接到oracle db


谢谢

问题在于,您的驱动程序是一个jar文件,当您将应用程序导出为jar文件时,该驱动程序将是jar文件中的一个jar文件。对于这种情况,您需要一个特殊的类加载器,或者将驱动程序jar文件放在主程序的类路径中。

使用WinRar探索导出的jar,并检查它是否在jar下包含jar。

还要注意许可问题。如果你想公开发布你的项目,就不允许将oracle的驱动程序打包到jar文件中。实际上,目前我没有主项目的源代码,只有库的源代码。我已经检查了classpath系统环境变量。我还将jodbc.jar与主项目(一个可执行jar)放在同一个库中,但它仍然不起作用。通常,在执行Jar时,Java VM应该在类路径中查找类,它应该可以工作,对吗?您可以尝试这样运行主项目:
Java-cp path to/ojdbc14.Jar:path to/your Jar projects.main.Clazz
(在编译的项目.class文件所在的目录中),然后它将位于classpath.allow->当然,当您将ojdbc.jar与主项目放在同一个jar中时,它不会工作。我的回答是,你不能简单地把罐子放在罐子下面/里面!谢谢,它可以使用上面提到的命令行运行,但是使用“;”而不是“:”我打开了它,它在jar.Simple下不包含jar,一个包dbconnexion和一个类dbaccessor。在导出的jar中,没有ojdbc.jar,但是在.classpath中有一个库条目:classpathentry kind=“src”path=”“/>尝试从命令提示符创建一个jar,该命令提示符应该有ojdbc.jar,并尝试一下。看起来dbconnexion或dbaccessor正在尝试创建连接,但jar不在IE范围内。导出的jar应该有ojdbc14.jar(无论您使用哪个版本)。创建一个jar:如果您想使用eclipse,那么在您的项目中复制ojdbc.jar。当您在右侧选择导出->选择要导出的资源->时,您将看到.classpath和。在Eclipse中,虽然ojdbc.jar在项目中被引用为库,但ojdbc.jar并没有出现在explort对话框的资源列表中(在dame列表中作为.classpath和.project)。你在我的项目中复制ojdbc.jar是什么意思?再一次:你不能把一个jar放在一个jar中,然后期望它工作!特别是如果外部jar是一个库,您希望在其他项目中使用它。如果jar是作为程序运行的,那么它可能会工作(因为eclipse随后会为jar提供一个特殊的类装入器)