gpt4 book ai didi

java - OSGi Felix 和 BndTools - 按名称加载类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:56 25 4
gpt4 key购买 nike

在我的 OSGi 环境中,我正在尝试预加载数据库驱动程序以供进一步使用。通常,这可以像这样完成:

Class.forName("com.mysql.jdbc.Driver");

之后,就可以创建连接了。但是,如果我在 Felix 下的 OSGi 中使用它,他会说找不到该类 (ClassNotFoundException) 并且无法创建连接。但是当我做类似的事情时(try-catch 被省略):

com.mysql.jdbc.Driver d = new com.mysql.jdbcDriver
Class.forName("com.mysql.jdbc.Driver");

然后一切正常并创建连接。但是,这不是很漂亮,因为无法交换驱动程序类。

有没有办法用第一种方法加载类?我假设我必须提供正确的类加载器。但是我从哪里得到它呢?

MySQL 驱动程序作为 OSGi 包装器包提供。

最佳答案

您究竟是如何创建捆绑 list 的?如果您使用工具自动解析包的 OSGi 导入语句,它们将在第一种方法上失败,因为它们无法将简单的字符串识别为包依赖项。第二种方法将依赖关系表示为硬 Java 依赖关系,因此它可以被添加所需 OSGi 导入语句的工具识别(因此由 OSGi 运行时识别到您的包的类路径)。

因此,要使第一种方法起作用,您必须将包 com.mysql.jdbc 的依赖项添加到包的 OSGi 导入语句中。这是如何实现的是特定于工具的,Bnd 使用 Import-Statement配置参数。

关于java - OSGi Felix 和 BndTools - 按名称加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9573720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com