我们最近搬到了JBOSS AS 7.由于它基于OSGi并且所有模块都是隔离的,我们遇到了问题。
我们的一个jar是由来自JBOSS模块之外的指定目录的URLclassloader加载的。
Class[] parameters = new Class[]{URL.class};
URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;
Method method = sysclass.getDeclaredMethod("addURL",parameters);
method.setAccessible(true);
method.invoke(sysloader,new Object[]{ flist[i].toURI().toURL()});
flist [i]包含要加载完整路径的jar。
以前曾经工作过的地方,在AS 7之后,这个类没有被加载。
我知道您可以将这些jar添加到modules文件夹并指定依赖项。但我们希望这一点有效。
有解决方法吗?
答案 0 :(得分:0)
正如其他人所说,JBoss AS 7不是基于OSGi,它使用自己的模块系统(JBoss Modules)。你正在做什么(对类加载器的反思)是违反任何规则的,完全不受支持并且只是偶然地工作。你应该如下: