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 файла в пути к классу. Исключение исчезнет, если исправлен путь к классу.