0

我将 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 中运行良好。有什么好主意吗?非常感谢

4

1 回答 1

0

Jaybird 通过 加载它的一些组件作为插件java.util.ServiceLoader,如果这不起作用,它将回退到一个固定的插件列表。不幸的是,在这种情况下,ServiceConfigurationError在 Jaybird 没有预料到的地方抛出了 a,因此没有处理这个错误,结果,类的加载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 快照存储库 ( https://oss.sonatype.org/content /repositories/snapshots ) 使用 Maven 或 Gradle。或者您可以直接从快照存储库下载 jar(注意:部署较新的快照时,这些链接会中断):

于 2020-12-19T14:08:04.803 回答