尝试编译JVisualVM时构建失败

时间:2013-02-25 18:31:08

标签: netbeans ant jvisualvm

在尝试构建JVisualVM时,我一直在遵循http://visualvm.java.net/build/build.html上显示的说明。

我检查了主干到我的硬盘,我已经下载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,但这似乎没什么帮助!

我对这些事情很陌生,我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

你提到你“对这些问题很陌生”,所以我可以问你是否有理由想要建立主干,特别是?大多数情况下,使用SVN进行源代码管理时的工作流程包括/tags下的标记版本。标记版本通常已经过测试,符合最低测试标准,适合发布,因此您可以更轻松地构建其中一个标记。

为自己构建/ trunk没有任何问题,但它应该被视为“不稳定/正在进行中”的构建,因此您应该会遇到问题。

您可能已经知道,VisualVM site可以下载预编译的二进制文件。如果列出的操作系统没有二进制文件,您可以使用软件包管理器(例如Ubuntu上的sudo apt-get install visualvm)找到它。


那就是说,如果你愿意,不要让我劝阻你不要尝试:

在这种情况下,编译器告诉您它无法在SERVER_RUNNING类中找到符号SERVER_PROGRESS_INDETERMINATECommonConstants。这些在ThreadMXBeanDataManager类的第117行引用。如果您查看该类,您将看到import org.netbeans.lib.profiler.global.CommonConstants语句,它告诉我们CommonConstants来自NetBeans。如果我们检查SVN commit history for the ThreadMXBeanDataManager class,我们可以看到开发人员进行了旨在使VisualVM与NetBeans 7.3兼容的更改。所以,有一些可能性:

  1. 开发人员错了,实际上正在编译其他版本的NetBeans(可能是预发布版等)。如果您发现是这种情况,则应提交错误报告(如果可能,还应提交补丁)。
  2. 您正在尝试针对错误版本的NetBeans进行编译。
  3. classpath / build脚本有问题。
  4. 让我们来看看#2和#3。我们可以使用JFind或类似的实用程序(或通过Google搜索等)获取您链接到的二进制文件并找出CommonConstants类所在的jar: location of jars

    我们看到该类存在于两个地方,因此接下来要做的是检查两个类文件并确保它们具有常量。使用解压缩实用程序(例如7-zip)展开jar文件并使用反编译器(我喜欢JD-GUI)来验证该类是否具有常量: decompiler

    您链接到的版本在我的计算机上似乎没问题,所以不幸的是现在您需要进一步调查。这些jar中的一个或两个是在Ant脚本中的类路径中进行编译吗?您是否通过环境变量在类路径上有不同版本的jar?这里有很多可能性,所以你必须做一些调查。如果所有这些看起来像是很多工作,那么我建议您使用其中一个预编译的二进制文件或切换到标记构建。

答案 1 :(得分:0)

看起来您正在针对NetBeans 7.2进行编译。在尝试编译之前,您是否在NetBeans中打开了VisualVM项目?如果是这样,请检查NetBeans中为顶级VisualVM项目设置的NetBeans平台。您应该从nb73_visualvm_14012013.zip编译针对NetBeans平台的VisualVM。要检查您的安装是否正确,请尝试以下操作:

  1. 如果在NetBeans中打开VisualVM,请关闭NetBeans
  2. 在VisualVM源代码树中找到所有trunk / visualvm / * / nbproject / private目录并删除私人目录。
  3. 从命令行使用ant run
  4. 如果可行,请打开NetBeans,将trunk / visualvm / netbeans注册为NetBeans平台,并将set设置为VisualVM顶级项目的平台。