VisualVM не может профилировать веб-приложение на Eclipse

Я хотел бы профилировать мое веб-приложение Spring, которое работает на Tomcat и Eclipse. Я добавил VisualVM в Eclipse и выполнил следующие шаги, чтобы запустить приложение для профилирования.

Right click on the application name > 
Run As > 
Run Configuration > 
Java Application > 
'Selected Project' > 
Set 'org.apache.catalina.starup.Boostrap' as a value for Main class, 
also selected VisualVM as the Launcher > clicked on Run button.

VisualVM запускается, но отображается следующее сообщение:

  "Cannot open requested application"

В локальном я вижу VisualVM, Eclipse и Tomcat.

Следующее исключение будет выведено и показано на консоли:

 Exception in thread "main" java.lang.NoClassDefFoundError: 
org/apache/juli/logging/LogFactory
    at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:59)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Я считаю, что проблема связана с неправильным выбранным сервером. Может быть, я должен выбрать Tomcat, но не знаю, как это сделать.

Ответы

Ответ 1

Вероятно, проблема с неполным путем classpath, когда плагин VisualVM запускает Tomcat. Вы можете попытаться исправить путь к классу начальной конфигурации, которую вы создали (например, попытайтесь добавить bin/tomcat-juli.jar из вашей установки tomcat), но я сомневаюсь, что это сработает легко.

Вы можете попробовать следующее:

  • запустите свой Tomcat, например. от Eclipse
  • затем вручную запустите VisualVM: он фактически является частью JDK и находится в каталоге < JDK dir > /bin/jvisualvm (.exe)
  • в списке приложений вы должны увидеть процесс Tomcat, а затем открыть его двумя щелчками.

Ответ 2

Попробуйте использовать Java Mission Control, запустив jmc. Он включен в последние версии JDK. См. Начало работы doc в http://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/index.html

Запустите приложение, затем откройте окно jmc и подключитесь к процессу Tomcat.

Ответ 3

Это вызвано тем, что файл класса, зависящий от вашего кода, не найден во время выполнения. Это просто проблема с классом. Либо класс не существует в пути класса, либо у вас есть другая версия JAR файла в пути к классу. Исключение исчезнет, ​​если исправлен путь к классу.