微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java.util.ServiceConfigurationError: org.firebirdsql.gds.impl.GDSFactoryPlugin: 从 Oracle 中的 Java 存储过程读取配置文件时出错

如何解决java.util.ServiceConfigurationError: org.firebirdsql.gds.impl.GDSFactoryPlugin: 从 Oracle 中的 Java 存储过程读取配置文件时出错

我将 loadjava 工具 Jaybird-3.0.9-JDK_1.8 JDBC 驱动程序和我的 java 类加载到 Oracle 数据库。所有的类都解决了。当我第一次从 Oracle 运行 Java 存储过程时

错误 ORA-29532:Java 调用被未捕获的 Java 异常终止:java.util.ServiceConfigurationError:org.firebirdsql.gds.impl.GDSFactoryPlugin:读取配置文件时出错

Java 应用程序正在创建连接时。

具有相同 Oracle 连接的下一个调用导致

ORA-29532:Java 调用被未捕获的 Java 异常终止:java.lang.NoClassDefFoundError

重新连接后,我再次收到 ServiceConfigurationError 异常。 相同的代码在java中运行良好。有什么好主意吗?非常感谢

解决方法

Jaybird 通过 java.util.ServiceLoader 将其某些组件加载为插件,如果这不起作用,它将回退到固定的插件列表。不幸的是,在这种情况下,在 Jaybird 没有预料到的地方抛出了一个 ServiceConfigurationError,因此没有处理这个错误,结果类 GDSFactory 的加载被终止(这导致随后的 NoClassDefFoundError)。

根据您的问题,我不确切知道此故障是什么,但猜测是 loadjava 或 Oracle 类加载器似乎损坏了服务定义文件 (META-INF/services/org.firebirdsql.gds.impl.GDSFactoryPlugin),否则会导致异常读取时。

我创建了错误 JDBC-636,以便在 Jaybird 3.0.10、4.0.2 和即将推出的 Jaybird 5 中处理此异常。

Jaybird 3.0.10 和 4.0.2 已经发布,所以请使用这些版本而不是下面的快照。

只要 Jaybird 3.0.10 和 4.0.2 尚未发布,您可以尝试使用 Sonatype 快照存储库中的 3.0.10-SNAPSHOT 或 4.0.2.java8-SNAPSHOT (https://oss.sonatype.org/content/repositories/snapshots ) 使用 Maven 或 Gradle。或者,您可以直接从快照存储库下载 jar(注意:部署较新的快照后,这些链接将断开):

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。