Сбой сборки при попытке скомпилировать JVisualVM

Я следовал инструкциям, показанным на http://visualvm.java.net/build/build.html при попытке сборки JVisualVM.

Я загрузил ствол на свой жесткий диск, скачал http://java.net/projects/visualvm/downloads/download/dev/nb73_visualvm_14012013.zip и извлек его содержимое в каталог visualvm/, как было задано:

Для создания основного инструмента visualvm вам потребуется платформа NetBeans 7.3 и двоичные файлы профилировщика, доступные здесь. Эти двоичные файлы должны быть извлечены в каталог trunk/visualvm. Вы можете использовать ant run или ant build-zip для сборки или запуска VisualVM.

При выполнении ant run я получил:

compile:
    [mkdir] Created dir: C:\Users\user\Desktop\jvisualvm\visualvm\applicationviews\build\classes
 [nb-javac] Compiling 19 source files to C:\Users\user\Desktop\jvisualvm\visualvm\applicationviews\build\classes
 [nb-javac] warning: [options] bootstrap class path not set in conjunction with -source 1.5
 [nb-javac] C:\Users\user\Desktop\jvisualvm\visualvm\applicationviews\src\com\sun\tools\visualvm\application\views\threads\ThreadMXBeanDataManager.java:117: e
rror: cannot find symbol
 [nb-javac]             super(dummyLong, CommonConstants.SERVER_RUNNING, CommonConstants.SERVER_PROGRESS_INDETERMINATE);
 [nb-javac]                                             ^
 [nb-javac]   symbol:   variable SERVER_RUNNING
 [nb-javac]   location: interface CommonConstants
 [nb-javac] C:\Users\user\Desktop\jvisualvm\visualvm\applicationviews\src\com\sun\tools\visualvm\application\views\threads\ThreadMXBeanDataManager.java:117: e
rror: cannot find symbol
 [nb-javac]             super(dummyLong, CommonConstants.SERVER_RUNNING, CommonConstants.SERVER_PROGRESS_INDETERMINATE);
 [nb-javac]                                                                             ^
 [nb-javac]   symbol:   variable SERVER_PROGRESS_INDETERMINATE
 [nb-javac]   location: interface CommonConstants
 [nb-javac] Note: Some input files use unchecked or unsafe operations.
 [nb-javac] Note: Recompile with -Xlint:unchecked for details.
 [nb-javac] 2 errors
 [nb-javac] 1 warning

Я даже установил Netbeans 7.3, но это, похоже, немного не помогло!

Я совсем новичок в этих делах, я что-то упустил?


person devoured elysium    schedule 25.02.2013    source источник


Ответы (2)


Вы упомянули, что вы «совершенно новичок в этих делах», поэтому могу я спросить, есть ли причина, по которой вы хотите построить ствол, в частности? В большинстве случаев рабочий процесс при использовании SVN для управления версиями включает пометку выпусков тегами в / теги. Выпуски с тегами, как правило, были протестированы и соответствуют минимальным критериям тестирования, чтобы считаться подходящими для выпуска, поэтому вам, вероятно, будет легче создать один из тегов.

Нет ничего плохого в сборке /trunk для себя, но ее следует рассматривать как «нестабильную/незавершенную» сборку, поэтому следует ожидать возникновения проблем.

Как вы, возможно, уже знаете, предварительно скомпилированные двоичные файлы доступны для загрузки на сайте VisualVM. Если в списке нет двоичного файла для вашей операционной системы, вы, вероятно, можете найти его с помощью своего менеджера пакетов (например, sudo apt-get install visualvm в Ubuntu).


Тем не менее, не позволяйте мне отговаривать вас от попыток, если вы хотите:

В этом случае компилятор сообщает вам, что не может найти символы SERVER_RUNNING и SERVER_PROGRESS_INDETERMINATE в классе CommonConstants. Они указаны в строке 117 файла ThreadMXBeanDataManager. Если вы посмотрите на этот класс, вы увидите оператор import org.netbeans.lib.profiler.global.CommonConstants, который говорит нам, что CommonConstants происходит от NetBeans. Если мы изучим историю коммитов SVN для класса ThreadMXBeanDataManager, мы сможем видим, что разработчик внес изменения, чтобы сделать VisualVM совместимым с NetBeans 7.3. Итак, есть несколько возможностей:

  1. Разработчик ошибся и на самом деле компилировал с какой-то другой версией NetBeans (возможно, предварительной версией и т. д.). Если вы обнаружите, что это так, вы должны отправить отчет об ошибке (и, если возможно, патч).
  2. Вы пытаетесь скомпилировать неправильную версию NetBeans.
  3. Что-то не так со сценарием classpath/build.

Давайте рассмотрим № 2 и № 3. Мы можем взять двоичный файл, на который вы ссылаетесь, и выяснить, в каких банках живет класс CommonConstants, используя JFind. или аналогичная утилита (или с помощью Google и т. д.): location of jars

Мы видим, что класс живет в двух местах, поэтому следующее, что нужно сделать, это проверить оба файла классов и убедиться, что в них есть константы. Воспользуйтесь утилитой распаковки (например, 7-zip), чтобы распаковать JAR-файлы, и используйте декомпилятор (я например JD-GUI), чтобы убедиться, что класс имеет константы: декомпилятор

Версия, на которую вы ссылаетесь, выглядит нормально на моей машине, поэтому, к сожалению, вам нужно продолжить расследование. Находятся ли один или оба из этих jar-файлов в пути к классам в сценарии Ant, выполняющем компиляцию? У вас есть другая версия jar в вашем пути к классам через переменную среды? Здесь есть много возможностей, так что вам придется немного покопаться. Если все это кажется слишком трудоемким, то я предлагаю вам использовать один из предварительно скомпилированных двоичных файлов или переключиться на сборку тегов.

person Justin Garrick    schedule 06.03.2013

Похоже, вы компилируете его для NetBeans 7.2. Открыли ли вы проект VisualVM в NetBeans, прежде чем пытаться его скомпилировать? Если да, проверьте, какая платформа NetBeans установлена ​​для проекта VisualVM верхнего уровня в NetBeans. Вы должны скомпилировать VisualVM для платформы NetBeans из nb73_visualvm_14012013.zip. Чтобы проверить правильность установки, попробуйте следующее:

  1. Если у вас открыт VisualVM в NetBeans, закройте NetBeans
  2. найдите все каталоги trunk/visualvm/*/nbproject/private в исходном дереве VisualVM и удалите частный каталог.
  3. используйте ant run из командной строки

Если это сработает, откройте NetBeans, зарегистрируйте trunk/visualvm/netbeans как платформу NetBeans и установите ее как платформу для проекта верхнего уровня VisualVM.

person Tomas Hurka    schedule 07.03.2013