2

在尝试构建 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,但这似乎有点帮助!

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

4

2 回答 2

2

你提到你“对这些事情很陌生”,所以我可以问一下你是否有理由要建造主干,具体来说?大多数时候,使用 SVN 进行源代码控制时的工作流程包括在/tags下标记发布。标记的版本通常已经过测试,并且满足了被认为适合发布的最低测试标准,因此您可能会更轻松地构建其中一个标签。

为自己构建 /trunk 并没有什么问题,但它应该被视为“不稳定/正在进行中”的构建,所以你应该预料到会遇到问题。

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


就是说,如果您愿意,请不要让我阻止您尝试:

在这种情况下,编译器告诉您它在类SERVER_RUNNING中找不到符号。这些在课程的第 117 行被引用。如果你看一下那个类,你会看到这个声明,它告诉我们 CommonConstants 来自 NetBeans。如果我们检查ThreadMXBeanDataManager 类的 SVN 提交历史记录,我们可以看到开发人员所做的更改旨在使 VisualVM 与 NetBeans 7.3 兼容。所以,有几种可能:SERVER_PROGRESS_INDETERMINATECommonConstantsThreadMXBeanDataManagerimport org.netbeans.lib.profiler.global.CommonConstants

  1. 开发人员错了,实际上是在使用其他版本的 NetBeans(可能是预发行版等)进行编译。如果您发现是这种情况,您应该提交一份错误报告(如果可能,还需要一份补丁)。
  2. 您正在尝试针对错误版本的 NetBeans 进行编译。
  3. 类路径/构建脚本有问题。

让我们检查#2 和#3。我们可以获取您链接到的二进制文件,并使用JFind或类似实用程序(或通过谷歌搜索等)找出 CommonConstants 类所在的 jar: 罐子的位置

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

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

于 2013-03-06T19:30:27.003 回答
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从命令行使用

如果可行,请打开 NetBeans,将 trunk/visualvm/netbeans 注册为 NetBeans 平台,并将其设置为 VisualVM 顶级项目的平台。

于 2013-03-07T09:52:22.803 回答