1

我正在研究一个对 mx4j jar 具有传递依赖的 Grails 项目。我无法避免使用 mx4j jar 的依赖关系,并且我在提供的范围内使用了这个 jar。

但是每当我使用我运行我的应用程序时,grails run-app我都会收到以下错误:

Error loader constraint violation: loader (instance of ) previously initiated loading for a different type with name "javax/management/MBeanServer" java.lang.LinkageError: loader constraint violation: loader (instance of ) previously initiated loading for a different type with name "javax/management/MBeanServer" at javax.management.MBeanServerBuilder.newMBeanServerDelegate(MBeanServerBuilder.java:49) at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:302)

如果我删除provided 'mx4j:mx4j:3.0.2'依赖项,我会在 mx4j 类上获得 ClassNotFoundException。

我认为内部 grails tomcat 正在加载“javax/management/MBeanServer”类,并且由于它也是通过 mx4j 加载的,因此导致了上述问题。无论如何我可以在 grails 结束时解决这个问题吗?我无法避免项目中的 mx4j 依赖项。

4

2 回答 2

0

除了打开 jar 并删除有问题的类(充其量是不确定的)之外,关于类路径摆弄,我没有看到很多选择。

使用 Spring(你已经在你的 grails 应用程序中安装)来导出你的 mbeans怎么样?

于 2012-03-30T16:10:00.130 回答
0

我可以解决它。我删除了 mx4j 依赖项,并从我添加的原始依赖项中排除了引入 mx4j 依赖项的依赖项。当我删除 mx4j 时,我得到了相同的 ClassNotFoundException,但我避免了需要它的依赖项。一些如何开始工作:)

于 2012-04-10T09:07:20.443 回答