对 ojdbc7.jar 的驱动程序更新为 oracle/security/pki/OraclePKIProvider 提供错误
Posted
技术标签:
【中文标题】对 ojdbc7.jar 的驱动程序更新为 oracle/security/pki/OraclePKIProvider 提供错误【英文标题】:Driver update to ojdbc7.jar gives error for oracle/security/pki/OraclePKIProvider 【发布时间】:2015-05-19 06:18:33 【问题描述】:我之前一直在使用ojdbc14.jar,现在想升级到ojdbc7.jar以支持oracle12c。
但是在连接服务器时,“oracle/security/pki/OraclePKIProvider”出现错误。
如果我将 oraclepki.jar 添加到类路径服务器会正常启动而没有任何错误。
我试图弄清楚在 ojdbc7.jar 中添加了什么特殊内容,它要求我添加 oraclepki.jar,与 ojdbc14.jar 一样,它从未要求我将 oraclepki 添加到我的类路径中。
有谁知道导致此错误的 ojdbc7 的哪些变化以及如何避免在类路径中添加 oraclepki?
【问题讨论】:
这是 ClassNotFoundException 异常吗? 谢谢克拉克,它只是说错误:oracle/security/pki/OraclePKIProvider,但我绝对认为它的 ClassNotFoundException 因为在类路径上添加 Jar 可以解决问题。 检查 ojdbc14.jar 是否在类路径中 我可以通过添加 oraclepki.jar 来启动我的服务器,但之前在 ojdbc14.jar 中不需要它。我试图了解这场冲突的起源和性质。 Oracle 12c jdbc 驱动程序本身是否会导致我们必须在类路径上添加 oraclepki 的一些更改。 这是在文档中“ClassNotFoundException for this class oracle.security.pki.OraclePKIProvider is throw because this class is not present in the custom driver module oracle which is configured for the datasource” 【参考方案1】:检查您的类路径并确保删除以下内容:(如果存在)
-XX:-UseSplitVerifier
【讨论】:
为我工作,但我想知道黑白连接使用splitverifier 和那个异常是什么?【参考方案2】:这是记录在 Oracle 支持数据库中的 issue。如果您有 Oracle 支持,您可以在那里找到更多信息。如果没有……
正如 Joseph Carroll 所说,从命令行 Java 参数中删除 -XX:-UseSplitVerifier
可能会解决您的问题。 UseSplitVerifier 参数基本上告诉 Java 使用更早的、不那么严格的字节码验证器(在从 Java 6 升级到 Java 7 时,它有时用于让旧的字节码检测工具工作)。不幸的是,它在将某些工具从 Java 7 升级到 Java 8 时导致了一些问题。您可能会做的其他事情包括(根据 Oracle):
-
升级到与 java 7 兼容的字节码检测工具。
或者,如
一种解决方法,在类路径中包含 oraclepki_121020.jar。这是
升级到 java 7 兼容字节码时的有效解决方法
无法使用检测工具。
这个article 讨论了为什么添加-XX:-UseSplitVerifier
是为了将Java 7 与Oracle 结合使用。这个article 谈到在Java 8 中使用–noverify
标志而不是-XX:-UseSplitVerifier
。
【讨论】:
以上是关于对 ojdbc7.jar 的驱动程序更新为 oracle/security/pki/OraclePKIProvider 提供错误的主要内容,如果未能解决你的问题,请参考以下文章
MyEclipse连接Oracle12c测试报java.sql.SQLException: ORA-01017: 用户名/口令无效; 登录被拒绝
将 LIKE 与 ojdbc7.jar 一起使用时出现 SQLSyntaxErrorException
解决(Missing artifact com.oracle:ojdbc14:jar:11.2.0.4.0)
Missing artifact com.oracle:ojdbc6:jar:10.2.0.4.0问题解决 ojdbc包pom.xml出错