javax.management.InstanceNotFoundException:org.springframework.boot:type = Admin,name = SpringApplication

And*_*ndy 7 spring spring-batch spring-boot

我开发了一个Spring启动应用程序,该应用程序的功能正常.但是,在启动时,我多次看到下面的异常.

几个星期前,当我运行相同的应用程序时,我没有看到任何此类异常.之后代码库没有改变.我想知道它是否必须对环境做些什么.

我的帖子的原因是我想更多地了解异常的原因以及如何解决它.当我用Google搜索时,我找不到多少帮助.这在这里没有用.

Spring批处理过程从Oracle DB中提取数据,并在经过一些处理后将其写入JSON文件.我发布了pom.xml.

javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplication
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) ~[na:1.8.0_161]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getClassLoaderFor(DefaultMBeanServerInterceptor.java:1444) ~[na:1.8.0_161]
    at com.sun.jmx.mbeanserver.JmxMBeanServer.getClassLoaderFor(JmxMBeanServer.java:1324) ~[na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl$6.run(RMIConnectionImpl.java:1365) ~[na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl.getClassLoaderFor(RMIConnectionImpl.java:1362) ~[na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:813) ~[na:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_161]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_161]
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:361) ~[na:1.8.0_161]
    at sun.rmi.transport.Transport$1.run(Transport.java:200) [na:1.8.0_161]
    at sun.rmi.transport.Transport$1.run(Transport.java:197) [na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) [na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) [na:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_161]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_161]
Run Code Online (Sandbox Code Playgroud)

的pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.mySample</groupId>
<artifactId>db-extraction</artifactId>
<version>1.0.0</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
</parent>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>12.1.0.1</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
    <dependency>
        <groupId>commons-dbutils</groupId>
        <artifactId>commons-dbutils</artifactId>
        <version>1.6</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

小智 17

我和IDEA IntelliJ有同样的问题.问题是IntelliJ的默认服务器配置.您只需要删除"启用启动优化"和"启用JMX代理"复选框,然后它就可以了!

脚步:

  • 编辑配置
  • 选择你的项目
  • 删除"启用启动优化"和"启用JMX代理"复选框

  • 我只需要取消选中“启用JMX代理”即可。 (3认同)

小智 11

你是从Eclipse推出的吗?如果是这样,我找到了一种方法来解决Eclipse氧气中的这个问题:从STS插件Spring Boot仪表板或Run菜单中的Run Configurations转到启动配置.然后取消勾选启用JMX复选框并运行它.希望能帮助到你

  • 想法中的同样问题 (2认同)

Naf*_*shi 7

取消选中“编辑配置”窗口上的“启用 JMX 代理”帮助我消除了 IntelliJ 上的错误。要节省设置,腾出时间发布屏幕截图:

在此输入图像描述


lin*_*dym 6

似乎回答你的问题“的原因,我的帖子是我想了解更多关于异常的原因,以及如何解决它。我找不到太大的帮助,当我用Google搜索”。

问题是 JMX/Lifecycle 会立即启动,但 Spring Boot 需要更长的时间,因为有许多事情需要解决,例如应用程序属性、bean、自动装配等……所以在 JMX 启动期间,但 Spring Boot 尚未启动,JMX 正在搜索您的 SpringApplication(尚未启动),因此会抛出这些错误/异常。一旦 Spring Boot 启动,JMX 就会很高兴并且错误/异常停止。

就我而言,我使用上面的解决方案来解决启动过程中出现的错误/异常,但后来我发现我的引导仪表板不再显示我的本地主机应用程序运行的端口......它们显示为未知端口. 在 Eclipse/STS 3.9.5 中,我看到启用生命周期管理的复选框似乎解决了启动期间发生的错误/异常,但从这里的这篇文章看来,您需要启用生命周期管理和 JMX 来查看您的端口启动仪表板。

也就是说,看起来我们只需要做出选择 a.) 在启动期间发生错误/异常并查看端口或 b.) 禁用 JMX/Lifecycle 并在纸上跟踪端口...

希望这会有所帮助,adym