java.library.path 中没有 ocijdbc10

Posted

技术标签:

【中文标题】java.library.path 中没有 ocijdbc10【英文标题】:no ocijdbc10 in java.library.path 【发布时间】:2011-07-02 20:23:03 【问题描述】:

所以我一直被这个问题困扰,每当我尝试在 eclipse 中运行我的应用程序时,我都会收到这个错误。

2011-02-23 09:55:08,388 ERROR (com.xxxxx.services.factory.ServiceInvokerLocal:21) - 
java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path

我尝试按照我找到的here 的步骤进行操作,但没有成功。我已经在 XP VM 和 windows 7 上尝试过这个(尽管在 win 7 中我得到了一个不同的错误,如下)

java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path

我已经确保我的 oracle 客户端没有问题(通过运行 TOAD),并且我还将 classes12.jar / ojdbc14.jars 重新添加到我的 WEB-INF/lib 文件夹中,该文件夹直接取自我的 %ORACLE_HOME% 文件夹(也将它们重新添加到 lib 路径)。我也试过只添加没有classes12.jar的ojdbc14.jar。任何建议表示赞赏。

在 XP VM 中,我将 PATH 变量设置为 C:\Program Files\Java\jdk1.6.0_24\bin;C:\ORACLE\product\10.2.0.1\BIN。我正在使用 Tomcat 服务器 5.0

【问题讨论】:

您没有在纯 java 模式下使用 Oracle JDBC 有什么原因吗? 纯java模式是什么意思?我在 Eclipse 中运行。 您在本机模式下使用 oracle 驱动程序。它几乎肯定应该在纯 java 模式下使用。您使用的是什么 JDBC URL? jdbc:oracle:oci8:@xxxxx,当您说纯 Java 时,您是在谈论使用瘦连接吗? 同意斯卡夫曼。如果瘦驱动程序可以,请使用它。 【参考方案1】:

我同意您在 cmets 中获得的建议,如果可以的话,请使用瘦驱动程序而不是 OCI 驱动程序。它更简单,它应该绕过你遇到的问题。

如果您出于某种原因确实需要 OCI 驱动程序,那么您的问题是 DLL 不在您的 Java 库路径上。这与用于定位类定义的类路径是分开的。这里的线索是 (a) 错误引用 java.library.path 的事实,以及 (b) 您得到 UnsatisfiedLinkError 而不是 ClassNotFoundException 的事实。

您需要设置 java.library.path 属性以包含 DLL 的位置,或将 DLL 的位置添加到 Windows PATH,以便 Java 找到它们。

更多信息在这里:http://forums.oracle.com/forums/thread.jspa?threadID=615281

【讨论】:

它说我缺少的 .dll 包含在我的 PATH 变量 (C:\ORACLE\product\10.2.0.1\BIN) 中。除非我需要专门添加它... 只是为了添加更多内容,我有 Windows 7 并且代码使用的是 oracle 10g 客户端。我发现 Oracle 11gx86 在我的机器上更稳定,我添加了 ojdbc5.jar 而不是 ojdbc14.jar。你可以在这里找到更多关于何时使用的信息serverfault.com/questions/10477/…【参考方案2】:

我最近两次遇到同样的错误。我第一次设法在不知道我做了什么的情况下解决了它。你不只是讨厌它,因为当它再次出现时你会做什么?好吧,当我不得不在 Eclipse 中创建一个新项目时,它确实再次出现了。这次我知道问题出在哪里,这是一件很容易忽略和修复的事情。其他张贴者提供了很多信息,但如果您的根本原因与我的相同,并且我相信您这样做,它对您无济于事......

问题很简单,就是这样:我的 Java 构建路径(在 Eclipse 中)中有两个不同的 ojdbcXX.jar 文件。我同时拥有 ojdbc14.jar 和 ojdbc6.jar 显然它首先击中 ojdbc14.jar 然后抛出错误。一旦我删除了不必要的 jar 文件,错误就消失了。在我意识到出了什么问题之前,把我逼疯了一整天!

我希望这会有所帮助。

【讨论】:

【参考方案3】:

当您使用错误/旧版本的 oci.dll 时会发生此错误。设置路径并恢复到正确的 oci.dll 后,错误消失了。

【讨论】:

【参考方案4】:

当我使用 DBvisualize 连接 Oracle 数据库时,我也遇到了这个错误。 我想是因为你还没有安装Oracle Client。 安装后,可能就OK了

【讨论】:

【参考方案5】:

我在使用 MyEclipse 时遇到了同样的问题。需要设置 oracle 客户端 lib 和 bin 文件夹的路径。附上图片供参考。希望能帮助到你 enter image description here

【讨论】:

以上是关于java.library.path 中没有 ocijdbc10的主要内容,如果未能解决你的问题,请参考以下文章

java.library.path 中没有 ocijdbc10

我不明白为啥“java.library.path 中没有 sqljdbc_auth”仍然存在

如何解决“java.library.path 中没有 db_java-6.2”问题?

线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 JNTIest [关闭]

获取 UnsatisfiedLinkError:创建 TessBaseAPI 时 java.library.path 中没有 jnilept

错误:win10 上的 java.library.path 中没有 swt-pi-gtk-3139