NoClassDefFound при профилировании приложения SpringBoot с помощью VisualVM

#java #spring #profiling #visualvm

#java #spring #профилирование #visualvm

Вопрос:

Я пытаюсь профилировать свое приложение SpringBoot. Чтобы сделать это, я упаковал его в jar-файл, вот часть моего pom.xml . Я могу запустить это с java -jar App.jar , и я могу использовать свои конечные точки REST. Это работает нормально.

     <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
  

Но я хочу профилировать его с помощью VisualVM. Для этого мне нужно запустить is как

 java -Xverify:none -jar App.jar
  

потому что в противном случае я получаю Redefinition failed with error 62 . Приложение запущено, конечные точки REST все еще работают, но я вижу этот журнал.

главная] o.a.catalina.core.AprLifecycleListener: в Java.library.path не найдена встроенная библиотека Apache Tomcat на базе APR, которая обеспечивает оптимальную производительность в производственных средах: [C:Program Файлы (x86)…

Но, как я уже сказал, это работает, но профилирование не работает. После запуска профилирования CPU на VisualVM я получаю этот stacktrace

ОШИБКА 6944 — [alina-utility-1] org.apache.catalina.core.База контейнеров: фоновый поток обработки исключений

java.язык.Ошибка NoClassDefFoundError: org/springframework/boot/autoconfigure/web/embedded /TomcatWebServerFactoryCustomizer $$Lambda $ 304 в org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer $$Lambda $304/254749889.lifecycleEvent (неизвестный источник)

Комментарии:

1. Это связано с bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8145964 Вы могли бы попробовать загрузить последнюю версию VisualVM и надеяться, что у нее есть обходной путь.

2. У меня была похожая проблема, в основном, взорвите ваш FAT JAR и повторите попытку. Я только что написал об этом статью: medium.com/kayvan-kaseb /…