繁体   English   中英

Spring Boot 应用程序 + Jolokia - 启动时出现异常

[英]Spring Boot application + Jolokia - exception during startup

我正在使用 Spring Boot 1.5.3.RELEASE 和 Jolokia 1.3.6(也发生在更高版本中)。

通过添加依赖项来集成 Jolokia:

 <dependency>
     <groupId>org.jolokia</groupId>
     <artifactId>jolokia-core</artifactId>
 </dependency>

我们所有共享相同架构的微服务之一无法启动,我在启动期间看到以下根本原因的异常:

Caused by: java.io.FileNotFoundException: JAR entry BOOT-INF/lib/jolokia-core-1.3.7.jar!/META-INF/simplifiers-default not found in <MY_JAR_NAME_GOES_HERE>.jar
    at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:142)
    at sun.net.www.protocol.jar.JarURLConnection.getInputStream (JarURLConnection.java:150)
    at java.net.URL.openStream(URL.java:1045)
    at org.jolokia.util.ServiceObjectFactory.readServiceDefinitionFromUrl(ServiceObjectFactory.java:90)

当我从 IDE 启动应用程序时,不会发生此异常,仅当我以java -jar <MY_JAR>启动时。

我查看了 Jolokia 代码中产生异常的那一行,它看起来像这样:

reader = new LineNumberReader(new InputStreamReader(new URL(pUrl).openStream(),"UTF8"));

所以我得出结论(调试后) new URL(pUrl).openStream()未能找到上述异常堆栈跟踪中指定的 jar 条目。 我也明白在 IDE 中它不会发生,因为它适用于不同的类加载器(Spring Boot 应用程序使用LaunchedURLClassLoader )。

但是,我在源代码中没有看到错误:我们有很多微服务,所有微服务都以相同的配置运行并且按预期工作,此外,据我所知,这是 Jolokia 的记录方式一体化。

所以我怀疑这里有一些竞争条件或其他什么,但我不能真正指出这里发生了什么。

有没有人遇到过这样的问题? 有解决方法吗?

我得到了完全相同的例外。 我的问题是文件名有一个+ (我正在使用reckon Gradle 插件来生成项目版本)。 解决方案是在使用java -jar运行之前重命名文件。

我面临同样的问题,Spring Boot 1.5.22 和 jolokia 的默认版本。

我有另一个没有问题的应用程序(相同版本的 SpringBoot,jolokia)......我没有发现这两个应用程序之间有任何区别......

但我使用了该解决方法:指示 Spring Boot 提取 jolokia jar,以便仅跳过 jolokia jar 的 Spring boot 嵌套 jar url 过程。

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <requiresUnpack>
                    <dependency>
                        <artifactId>jolokia-core</artifactId>
                        <groupId>org.jolokia</groupId>
                    </dependency>
                </requiresUnpack>
            </configuration>
        </plugin>

https://docs.spring.io/spring-boot/docs/1.5.x/reference/htmlsingle/#howto-extract-specific-libraries-when-an-executable-jar-runs

有了这个解决方法,jolokia 很高兴, /jolokia端点可用并且 Spring Boot Admin jmx 选项卡处于活动状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM