Spring Boot构建良好,但在运行时抛出javax.naming.NameNotFoundException:剩余名称:env / jmx / runtime

Zac*_*ber 4 java spring gradle spring-boot

我有一个通过gradle可以正常构建的现有应用程序,但是当我通过嵌入式tomcat服务器运行它时,出现以下异常。关于如何解决的任何想法?

org.springframework.beans.factory.BeanCreationException:在类路径资源[org / springframework / boot / autoconfigure / jmx / JmxAutoConfiguration.class]中创建名称为'mbeanExporter'的bean时出错:通过工厂方法实例化Bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.jmx.export.annotation.AnnotationMBeanExporter]:工厂方法'mbeanExporter'引发了异常;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建在类路径资源[org / springframework / boot / autoconfigure / jmx / JmxAutoConfiguration.class]中定义的名称为'mbeanServer'的bean时出错:通过工厂方法实例化Bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.management.MBeanServer]:工厂方法'mbeanServer'抛出异常;嵌套的异常是org.springframework.jmx.MBeanServerNotFoundException:无法从JNDI检索WebLogic MBeanServer。嵌套异常是javax.naming.NameNotFoundException:剩余名称:org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)上的env / jmx / runtime,位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory org.springframework.beans.factory.support上的.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1119)在org.springframework.beans.factory.support上的.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1119)

Mat*_*att 8

我有同样的问题,并通过JmxAutoConfiguration从Spring Boot配置中排除该类来解决它。

@SpringBootApplication(exclude = JmxAutoConfiguration.class)
public class Application {...}
Run Code Online (Sandbox Code Playgroud)

似乎Spring试图创建一个mbeanExporter在weblogic api库中检测到的bean(),并且该bean需要env/jmx/runtimeJNDI。


小智 5

您可以通过添加以下行来跳过 Spring Boot 的加载配置:

@EnableAutoConfiguration(exclude = { JmxAutoConfiguration.class, EndpointMBeanExportAutoConfiguration.class})
Run Code Online (Sandbox Code Playgroud)

新版本 Spring Boot(当前:1.5.4)中的容器尝试在应用服务器 jar 中加载其他 bean,因此您需要添加此设置的排除项(如:EndpointMBeanExportAutoConfiguration)。


And*_*son 2

MBean 导出器认为它在 Weblogic 上运行:

无法从 JNDI 检索 WebLogic MBeanServer

weblogic.management.Helper只有在类路径上才会发生这种情况。您需要从类路径中删除该类。如果您不确定该类在哪里,运行 Tomcat-verbose:class会告诉您。