【问题标题】:Eclipse: Exported library fail to instantiate oracle driver ojdbc.jarEclipse:导出的库无法实例化 oracle 驱动程序 ojdbc.jar
【发布时间】:2012-08-13 12:54:59
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: java eclipse oracle jar


    【解决方案1】:

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

    【讨论】:

    • 还要注意许可问题。如果您想公开发布您的项目,则不允许将 oracle 的驱动程序打包到您的 jar 文件中。
    • 其实我暂时没有主项目的源码,只有库的源码。我已经检查了类路径系统环境变量。我还将 jodbc.jar 放在与主项目(这是一个可执行 jar)相同的库中,但它仍然无法正常工作。通常在执行 Jar 时,Java VM 应该在类路径中查找类并且它应该可以工作,对吧?
    • 您可以尝试像这样运行您的主项目:java -cp path-to/ojdbc14.jar:path-to/your-jar projects.main.Clazz(在项目编译的 .class 文件所在的目录中),然后它将位于类路径中。
    • also -> 当然,当您将 ojdbc.jar 放在与主项目相同的 jar 中时,它不起作用。我的回答是,你不能简单地把罐子放在罐子下面/罐子里!
    • 谢谢,它可以使用上面提到的命令行运行,但使用“;”而不是“:”
    【解决方案2】:

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

    【讨论】:

    • 我打开了,jar下没有jar。
    • 简单,一个包 dbconnexion 和一个类 DBAcessor。在导出的 jar 中,没有 ojdbc.jar,但在 .classpath 中有一个库条目:classpathentry kind="src" path=""/>
    • 尝试从命令提示符创建一个 jar,它应该有 ojdbc.jar 并试一试。似乎 dbconnexion 或 DBAcessor 正在尝试创建连接,但 jar 不在其范围内。导出的 jar 应该有 ojdbc14.jar(无论您使用哪个版本)。创建一个 jar:docs.oracle.com/javase/tutorial/deployment/jar/build.html 如果您想使用 eclipse,则将 ojdbc.jar 复制到您的项目中。当您选择导出-> 选择要导出的资源-> 在右侧您将看到 .classpath 和。项目,ojdbc.jar 也应该在那里并且应该检查它。
    • 在 Eclipse 中,ojdbc.jar 不会出现在资源列表中(在 dame 列表中为 .classpath 和 .project),尽管 ojdbc.jar 在项目中被引用为库.在我的项目中复制 ojdbc.jar 是什么意思?
    • 再一次:你不能把罐子放在罐子里,然后指望它起作用!特别是如果外部 jar 是一个库,您想在其他项目中使用它。如果 jar 打算作为程序运行,它可能会起作用(因为 eclipse 然后为 jar 提供了一个特殊的类加载器)
    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 2015-03-23
    • 2012-08-27
    • 2018-12-03
    • 1970-01-01
    • 2013-12-11
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多