如何将Java Agent打包为Visual VM插件

时间:2010-07-30 18:48:12

标签: java netbeans visualvm

我编写了一个Java代理以及一个用于控制代理的SWT GUI。

http://wiki.github.com/mchr3k/org.intrace/

我想将此库打包到VisualVM的插件中,以允许代理使用VisualVM连接到JVM。

我已经编写了一个Netbeans模块来执行此操作:

http://github.com/mchr3k/org.intrace/tree/master/InTrace-VisualVM-Plugin/

当我从Netbeans运行项目时,这是有效的。但是,当我使用“Create NBM”打包项目时,生成的库无法在VisualVM中安装。日志的输出如下:

INFO [org.netbeans.modules.autoupdate.services.InstallSupportImpl]: Timeout waiting for loading module org.intrace.visualvm/1.0 
INFO [org.netbeans.modules.autoupdate.ui.wizards.InstallStep]: timeout of loading InTrace Launcher[org.intrace.visualvm/1.0] 
org.netbeans.api.autoupdate.OperationException: timeout of loading InTrace Launcher[org.intrace.visualvm/1.0] 
   at org.netbeans.modules.autoupdate.services.InstallSupportImpl$3.call(InstallSupportImpl.java:437) 
   at org.netbeans.modules.autoupdate.services.InstallSupportImpl$3.call(InstallSupportImpl.java:302) 
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
   at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) 
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) 
[catch] at java.lang.Thread.run(Thread.java:619) 

我也怀疑我的代理和客户端库还没有打包到nbm文件中,因为它太小了。

我怀疑问题是我需要在项目build.xml中添加一些内容但我正在努力解决问题。

http://github.com/mchr3k/org.intrace/blob/master/InTrace-VisualVM-Plugin/build.xml

任何人都可以建议我缺少什么吗?

1 个答案:

答案 0 :(得分:2)

让我猜一下 - 您正在使用NetBeans 6.9开发和打包模块,然后尝试在VisualVM 1.2。*或jvisualvm中加载它?如果是这种情况,那么当针对NetBeans 6.9平台的模块不能轻易安装时,您刚遇到兼容性问题。基于NetBeans 6.8的应用程序(例如VisualVM 1.2。*)。这是由NB6.9平台使用pack200压缩/解压缩模块jar引起的。

为了将模块定位到旧平台(并且仍使用lates IDE构建它),您需要手动指定插件平台使用的模块线束(转到“工具/ NetBeans平台/”,然后选择“线束”选项卡,然后选择您可以下载的二进制文件的线束here

当您重建模块并创建NBM时,它应该在VisualVM 1.2。*以及jvisualvm中工作。