我在 OSGi 中开发时遇到了以下障碍。一组负责持久性的包使用com.mysql.jdbc.Driver
由另一个(Springsource EBR 提供的)包提供的类。在另一个包中,我将 Quartz 调度程序库配置为将数据库用作作业存储。这也是使用 MySQL 驱动程序完成的。然而,在运行时,我得到一个ClassNotFoundException
. 这很奇怪,因为持久性仍然正常工作。更奇怪的是,当我尝试手动加载类时,使用Class.forName("com.mysql.jdbc.Driver")
它是正确加载的,暗示该类确实可以加载。
巧合与否,Drools 似乎也发生了同样的事情……我将一些最新的 Drools jar 重新打包为 OSGi 包,部署它们,然后再次运行时ClassNotFoundException
弹出。在这两种情况下,所有供应商捆绑包都会添加到清单中所需的捆绑包中。
这个奇怪的问题是否敲响了警钟?我很高兴听到这件事...