【问题标题】:Build failed when trying to compile JVisualVM尝试编译 JVisualVM 时构建失败
【发布时间】:2013-02-25 18:31:08
【问题描述】:

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

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

【问题讨论】:

    标签: netbeans ant jvisualvm


    【解决方案1】:

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

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

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


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

    在这种情况下,编译器告诉您它在CommonConstants 类中找不到符号SERVER_RUNNINGSERVER_PROGRESS_INDETERMINATE。这些在 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. 类路径/构建脚本有问题。

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

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

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

    【讨论】:

      【解决方案2】:

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

      1. 如果您在 NetBeans 中打开了 VisualVM,请关闭 NetBeans
      2. 在VisualVM源码树中找到所有trunk/visualvm/*/nbproject/private目录,删除private目录。
      3. 从命令行使用ant run

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-19
        • 2020-10-21
        • 1970-01-01
        相关资源
        最近更新 更多