这对我有用:
确保tools.jar文件存在,并且运行jstatd命令的用户有权读取该文件。
确保中
jstatd.all.policy
指向tools.jar 的URL 正确并声明了协议(在这种情况下为文件)。例如,根据java.home
变量指向的位置,您可能需要../
像下面这样删除路径中的部分(我必须这样做):grant prebase "file:${java.home}/lib/tools.jar" {permission java.security.AllPermission;
};从Java 1.4开始,策略文件需要使用 UTF-8 进行 编码,而无需BOM 。EOL(CRLF与LF)并不重要。请参阅Oracle的“默认策略实施和策略文件语法”文档,位于“更改”部分下,以获取更多信息(未提供链接,因为我没有足够的信誉点来发布两个以上的链接,但是我确定您已经就能找到该文件)。
运行jstatd命令时,请使用策略文件的绝对路径,例如
jstatd -p 12345 -J-Djava.security.policy=/absolute-path-to/jstatd.all.policy
编辑:
-JJava 1.8中可能不再需要或不支持该参数,因此该命令将改为:
jstatd -p 12345 -Djava.security.policy=/absolute-path-to/jstatd.all.policy
(感谢@lisak指出这一点)
- 最后,一旦您通过了这一点,您可能会发现其他问题(我确实做到了),这些文章为我指明了正确的方向:使用VisualVM监视远程JBoss实例,并使用VisualVM监视JBoss的远程分析。基本上,如果已经使用了1099,则可能需要使用-p参数来使用其他端口,并
run.conf
通过JAVA_OPTS
(假设您正在监视JBoss实例)在JBoss中添加一些Java选项。所有内容都在提供的链接中进行了详细说明。
编辑:-指向死链接,使用VisualVM监视到另一个具有相同内容的页面的远程JBoss实例。



