1

我们最近迁移到 JBOSS AS 7。由于它基于 OSGi 并且所有模块都是隔离的,因此我们遇到了问题。

我们的 jar 之一是由 URLclassloader 从 JBOSS 模块之外的指定目录加载的。

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 添加到模块文件夹并指定依赖项。但我们希望这能奏效。

有解决方案吗?

4

1 回答 1

1

As others have said, JBoss AS 7 is not based on OSGi, it uses its own module system (JBoss Modules). What you're doing (reflection on classloaders) is against any rules, totally unsupported and worked only by accident. You you should is the following:

于 2015-03-16T15:49:56.237 回答