在尝试构建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,但这似乎没什么帮助!
我对这些事情很陌生,我错过了什么吗?
答案 0 :(得分:2)
你提到你“对这些问题很陌生”,所以我可以问你是否有理由想要建立主干,特别是?大多数情况下,使用SVN进行源代码管理时的工作流程包括/tags下的标记版本。标记版本通常已经过测试,符合最低测试标准,适合发布,因此您可以更轻松地构建其中一个标记。
为自己构建/ trunk没有任何问题,但它应该被视为“不稳定/正在进行中”的构建,因此您应该会遇到问题。
您可能已经知道,VisualVM site可以下载预编译的二进制文件。如果列出的操作系统没有二进制文件,您可以使用软件包管理器(例如Ubuntu上的sudo apt-get install visualvm
)找到它。
那就是说,如果你愿意,不要让我劝阻你不要尝试:
在这种情况下,编译器告诉您它无法在SERVER_RUNNING
类中找到符号SERVER_PROGRESS_INDETERMINATE
和CommonConstants
。这些在ThreadMXBeanDataManager
类的第117行引用。如果您查看该类,您将看到import org.netbeans.lib.profiler.global.CommonConstants
语句,它告诉我们CommonConstants来自NetBeans。如果我们检查SVN commit history for the ThreadMXBeanDataManager class,我们可以看到开发人员进行了旨在使VisualVM与NetBeans 7.3兼容的更改。所以,有一些可能性:
让我们来看看#2和#3。我们可以使用JFind或类似的实用程序(或通过Google搜索等)获取您链接到的二进制文件并找出CommonConstants类所在的jar:
我们看到该类存在于两个地方,因此接下来要做的是检查两个类文件并确保它们具有常量。使用解压缩实用程序(例如7-zip)展开jar文件并使用反编译器(我喜欢JD-GUI)来验证该类是否具有常量:
您链接到的版本在我的计算机上似乎没问题,所以不幸的是现在您需要进一步调查。这些jar中的一个或两个是在Ant脚本中的类路径中进行编译吗?您是否通过环境变量在类路径上有不同版本的jar?这里有很多可能性,所以你必须做一些调查。如果所有这些看起来像是很多工作,那么我建议您使用其中一个预编译的二进制文件或切换到标记构建。
答案 1 :(得分:0)
看起来您正在针对NetBeans 7.2进行编译。在尝试编译之前,您是否在NetBeans中打开了VisualVM项目?如果是这样,请检查NetBeans中为顶级VisualVM项目设置的NetBeans平台。您应该从nb73_visualvm_14012013.zip编译针对NetBeans平台的VisualVM。要检查您的安装是否正确,请尝试以下操作:
ant run
如果可行,请打开NetBeans,将trunk / visualvm / netbeans注册为NetBeans平台,并将set设置为VisualVM顶级项目的平台。