netbeans - 尝试编译 JVisualVM 时构建失败

标签 netbeans ant 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,但这似乎没有一点帮助!

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

最佳答案

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

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

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


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

在这种情况下,编译器会告诉您在 CommonConstants 类中找不到符号 SERVER_RUNNINGSERVER_PROGRESS_INDETERMINATEThreadMXBeanDataManager 的第 117 行引用了这些内容。类(class)。如果您查看该类,您将看到 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 中。或类似的实用程序(或通过谷歌搜索等): location of jars

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

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

关于netbeans - 尝试编译 JVisualVM 时构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073870/

相关文章:

netbeans - 恢复 netbeans 本地历史

.net - DotNET上是否有等效的JVisualVM?

file - 连接文件 - 包括文件夹中的文件

java - 如何在visualvm中启用跟踪分析?

java - 找不到 JVisualVM 放置性能数据的位置

C程序在Netbeans中编译,但在cmd中用gcc无法编译

java - Docx4j 类未找到错误

java - Netbeans 显示错误,但代码运行

android - 将 Android SDK 工具更新到修订版 14 后的 Ant 问题

class - 在 ANT 中制作 JAR 时如何有条件地包含 list 选项