NoSuchFieldError: Companion для azure.application-insights

В настоящее время я переношу свое приложение Spring-Boot на использование последней совместимой версии для JDK 8. В настоящее время я получаю эту ошибку при запуске приложения Spring-Boot.

      ightsTelemetryAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'azure.application-insights-com.microsoft.applicationinsights.boot.ApplicationInsightsProperties': Initialization
 of bean failed; nested exception is java.lang.NoSuchFieldError: Companion
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:165)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:577)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97)
        at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5218)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1016)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webRequestTrackingFilterRegistrationBean' defined in class path resource [com/microsoft/applicationinsights/boot/ApplicationInsightsWebMvcAutoConfiguration.class]: Unsatisfied dependency expressed through method
'webRequestTrackingFilterRegistrationBean' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.microsoft.applicationinsights.boot.ApplicationInsightsTelemetryAutoConfiguration': Unsatisfied dependency expressed through constructor paramet
er 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'azure.application-insights-com.microsoft.applicationinsights.boot.ApplicationInsightsProperties': Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: Companion
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)

У меня есть эти версии для моего applicationinsights: Spring-Boot-Starter-Parent 2.7.12, Spring-Cloud-Dependingness 2021.0.3 и Spring-Cloud-Starter-Bootstrap в моем родительском pom. Я обновился до последней версии applicationinsights, но по-прежнему получаю ту же ошибку.

                 <dependency>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>applicationinsights-spring-boot-starter</artifactId>
                <version>2.6.4</version>
            </dependency>
            <dependency>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>applicationinsights-logging-logback</artifactId>
                <version>2.6.4</version>
            </dependency>

Я обновил следующие артефакты, а также добавил зависимость Spring-cloud-starter-bootstrap.

1 ответ

Судя по всему, ошибка возникает из-за инициализацииazure.application-insights-com.microsoft.applicationinsights.boot.ApplicationInsightsPropertiesbean-компонент (или) из-за несовместимости версий между пакетом Azure Application Insights и Spring Boot, который вы используете.

Попробуйте обновить или понизить версию библиотеки Azure Application Insights , совместимую с вашей версией Spring Boot .

(Или)

создайте свое приложение с версией Spring Boot 2.7.x для использования ApplicationInsightsверсия пакета 2.6.4.

Бегатьmvn clean installкак только вы обновите версии.

введите сюда описание изображения

Альтернативы:

  • НАСКОЛЬКО МНЕ ИЗВЕСТНО,applicationinsights-spring-boot-starterПакет предназначен для старого способа настройки Application Insights.
  • Вместо этого вы можете использовать Java Agent/applicationinsights-runtime-attachв вашем приложении для настройки AppInsights.
      <dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>applicationinsights-runtime-attach</artifactId>
    <version>3.4.14</version>
</dependency>

пом.xml:

      <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-runtime-attach</artifactId>
            <version>3.4.14</version>
        </dependency>
    </dependencies>

Создаватьapplicationinsights-dev.jsonподsrc>main>resourcesпапку и добавьте:

      {
"connectionString":"InstrumentationKey=XXXXX;IngestionEndpoint=https://XXXXXX.in.applicationinsights.azure.com/;LiveEndpoint=https://XXXXX.livediagnostics.monitor.azure.com/"
}

Добавьте приведенную ниже конфигурацию вapplications.properties:

      -Dapplicationinsights:
runtime-attach:
configuration:
classpath:
file: "applicationinsights-dev.json"

основной()

      package  com.javabycode.springboot;
import  com.microsoft.applicationinsights.attach.ApplicationInsights;
import  org.springframework.boot.SpringApplication;

@SpringBootApplication
public  class  MyWebApplication{

public  static  void  main(String[] args) throws  Exception {

ApplicationInsights.attach();

SpringApplication.run(MyWebApplication.class, args);

}

}

Использованная литература:

Обновление с версии 2.x — Azure Monitor Application Insights Java — Azure Monitor | Microsoft Learn Настройка Azure Monitor Application Insights для Spring Boot — Azure Monitor | Microsoft Обучение