在我的OSGi环境中,我试图预加载数据库驱动程序以供进一步使用。通常情况下,可以这样做:OSGi Felix和BndTools - 按名称加载类
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包装程序包提供的。
如果您的源代码中包含类名,则永远不需要使用Class.forName加载类动态类。只有通过运行时机制获取类名时,才应该使用动态类加载。 – 2012-03-06 07:47:41