Spring Boot - проблема с исполнительным механизмом Spring Boot Starter - PullRequest
0 голосов
/ 27 апреля 2020

Итак, я создаю новый проект с пружинной загрузкой и хотел поиграть с пружинно-загрузочным стартером-приводом. Однако при запуске приложения возникают проблемы.

Фрагмент Pom:

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

<spring-boot.version>2.2.0.RELEASE</spring-boot.version>

spring-boot s на моем пути к классам: enter image description here

Ошибка при запуске приложения:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration.bindEntityManagerFactoryToRegistry(HibernateMetricsAutoConfiguration.java:68)

The following method did not exist:

    io.micrometer.core.instrument.binder.jpa.HibernateMetrics.<init>(Lorg/hibernate/SessionFactory;Ljava/lang/String;Ljava/lang/Iterable;)V

The method's class, io.micrometer.core.instrument.binder.jpa.HibernateMetrics, is available from the following locations:

    jar:file:/C:/Users/rahul/.m2/repository/io/micrometer/micrometer-core/1.0.2/micrometer-core-1.0.2.jar!/io/micrometer/core/instrument/binder/jpa/HibernateMetrics.class

It was loaded from the following location:

    file:/C:/Users/rahul/.m2/repository/io/micrometer/micrometer-core/1.0.2/micrometer-core-1.0.2.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of io.micrometer.core.instrument.binder.jpa.HibernateMetrics

В этот момент происходит исключение: enter image description here

Однако существует только один конструктор HibernateMetrics, который выглядит следующим образом:

public HibernateMetrics(EntityManagerFactory entityManagerFactory, String entityManagerFactoryName, Iterable<Tag> tags) {
        this.tags = Tags.concat(tags, "entityManagerFactory", entityManagerFactoryName);
        this.stats = hasStatisticsEnabled(entityManagerFactory) ? getStatistics(entityManagerFactory) : null;
    }

Из анализатора зависимостей видно, что не существует нескольких версий micrometer-core: enter image description here

Я также пытался с spring-boot-starter-actuator version of 2.2.0.RELEASE, но с той же проблемой.

Я не уверен, что мне здесь не хватает, любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 28 апреля 2020

Предполагается, что вы подключите приложение с пружинным приводом к консоли JMX. («потому что это не веб-приложение»)

Я использовал Spring Initializr на основе ваших зависимостей pom и примера CommandLineRunner. Пример Github: https://github.com/thiagochagas/actuator-example

Настраивает: я удалил зависимость "spring-boot-starter":

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <exclusions>
         <exclusion>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-logging</artifactId>
         </exclusion>
     </exclusions>
</dependency>

Я использовал Thread. sleep (30000L) в классе DemoApplication для упрощения примера.

Установите и запустите приложение:

./mvnw clean install
java -jar target/demo-0.0.1-SNAPSHOT.jar

Откройте jconsole:

$JAVA_HOME/bin/jconsole

Пока ваше приложение он должен быть запущен на jconsole.

Выберите «demo-0.0.1-SNAPSHOT.jar» для анализа: enter image description here

Если это сообщение показано, выберите опцию «Небезопасное соединение»: enter image description here

Анализ работающего приложения: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...