如何在运行时从文件夹加载jar文件并在JBoss EAP 6.0.1中实例化类



我有两个jar文件。首先只包含接口&第二个包含所有的实现类。我已经在我的应用程序的ear文件中包含了第一个jar,所以当我的应用程序部署时,它的类就会被加载。

在请求的基础上,我试图加载我的实现类从.jar文件存在于某些文件夹,在运行时使用URLClassLoader。

类正在被加载&使用反射,我正在创建类的实例,但是在将该实例转换为包含在.ear文件中的jar文件中的接口时,我得到了接口类的NoClassDefFoundError。

我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。

相同的代码在正常的J2SE环境中工作,但在JBoss驼峰上下文中不起作用。

如果我的查询不清楚,请让我知道我也可以粘贴源代码。

你的方法应该在JBossEAP 6上工作,这就是我在JBossAS7.1上所做的。

class YourClassLoader extends URLClassLoader {
    ...
    public YourClassLoader() {
       this(YourClassLoader.class.getClassLoader());
       ...
       this.addURL(jarfile.toURI().toURL());
       ...
    }
    ...
}
Class<?> yourClass = yourClassLoader.loadClass(className);
YourClassInterface yourClassInterface = null;
yourClassInterface = (YourClassInterface ) yourClass.newInstance();

请尝试用同一个URLClassLoader加载接口jar。

相关内容

  • 没有找到相关文章

最新更新