今天对你们大家都很好。
我想使用jstatd来监视JVM、GC、Heap和一些运行在远程机器上的应用程序的一些重要指标。
当我尝试通过命令行从java路径的bin文件夹执行命令jstatd.exe时,我得到以下错误:
C:\Program Files (x86)\Java\jdk1.6.0_38\bin>jstatd.exe
Could not create remote object
access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:374)
at java.security.AccessController.checkPermission(AccessController.java:
549)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.System.setProperty(System.java:725)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:122).当我们在互联网上检查这个错误时,我们知道,我们必须添加一些在链接cannot start jstatd due to permission error中提到的安全文件。但是,我们还是会犯同样的错误。
有人能帮我们解决这个问题吗。
提前谢谢。
发布于 2015-06-03 07:22:50
使用cmd检查您的Java版本--在我的例子中,我的java版本是1.7,所以它没有工作--这是问题所在,请按照下面的正确版本更新您的策略文件:
grant codebase "file:C:/Program Files/Java/jdk1.7.0_51/lib/tools.jar" {
permission java.security.AllPermission;
};现在像下面这样运行jstatd
C:\Program Files\Java\jdk1.7.0_51\bin>jstatd -p 1234 J-Djava.security.policy=D:
\jstatd.all.policy希望它能成功!
注意:尝试从visualVM (您的远程主机)连接这个port1234,否则将无法工作。
编辑:
For JDK1.6
政策档案:
grant codebase "file:C:/Program Files/Java/jdk1.6.0_45/lib/tools.jar" {
permission java.security.AllPermission;
};jstatd命令:
C:\Program Files\Java\jdk1.6.0_45\bin>jstatd J-Djava.security.policy=D:/jstatd.
all.policy -p 1234https://stackoverflow.com/questions/29003372
复制相似问题