我一直按照 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_RUNNING
和 SERVER_PROGRESS_INDETERMINATE
。 ThreadMXBeanDataManager
的第 117 行引用了这些内容。类(class)。如果您查看该类,您将看到 import org.netbeans.lib.profiler.global.CommonConstants
语句,它告诉我们 CommonConstants 来自 NetBeans。如果我们检查 SVN commit history for the ThreadMXBeanDataManager class ,我们可以看到开发人员进行了一些更改,旨在使 VisualVM 与 NetBeans 7.3 兼容。因此,有以下几种可能性:
- 开发人员错了,实际上是使用其他版本的 NetBeans(可能是预发行版等)进行编译。如果您发现这种情况,您应该提交错误报告(如果可能的话,还应提交补丁)。
- 您正在尝试针对错误版本的 NetBeans 进行编译。
- 类路径/构建脚本有问题。
让我们检查#2 和#3。我们可以使用 JFind 获取链接到的二进制文件并找出 CommonConstants 类位于哪个 jar 中。或类似的实用程序(或通过谷歌搜索等):
我们看到该类存在于两个位置,因此接下来要做的就是检查两个类文件并确保它们具有常量。使用解压缩实用程序(例如 7-zip )来扩展 jar 文件并使用反编译器(我喜欢 JD-GUI )来验证该类是否具有常量:
您链接到的版本在我的机器上似乎没问题,所以不幸的是现在您必须进一步调查。这两个 jar 中的一个或两个都位于执行编译的 Ant 脚本的类路径中吗?您的类路径上是否通过环境变量有不同版本的 jar?这里有很多可能性,所以你必须做一些调查。如果所有这些看起来工作量很大,那么我建议您使用预编译的二进制文件之一或切换到标签构建。
关于netbeans - 尝试编译 JVisualVM 时构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073870/