是否可以在虚拟机启动后从同一个VM中插入javaagent?
让我们说例如我们在jar myagent.jar中有一个代理,它具有适当的元数据设置和已经实现的agentmain方法.现在,用户程序调用API调用,该调用应该导致代理插入,以便它可以重新定义类.
可以这样做吗?
我正试图摆弄Foursquare的HeapAudit,并试图使用IntelliJ IDEA进行设置.我已经设法使用pom.xml中的依赖项来构建它.
但是,当我实际尝试运行JUnit测试时,基本上所有测试都失败了.我猜这是因为使用HeapAudit需要将JVM作为a启动-javaagent,根据github:
$ java -javaagent:heapaudit.jar MyTest
Run Code Online (Sandbox Code Playgroud)
据推测,如果我把这条线放进去,测试就会通过,并引用heapaudit.jar我先前下载/构建的.但是,在我看来,如果我对源进行更改,我将需要重新打包这个愚蠢的.jar文件,以查看它是否有效.
有没有办法运行测试而-javaagent没有经历整个编译 - > package-into-jar每个测试周期的整个过程?也许让IntelliJ 在运行测试之前附加新编译的.class文件-javaagent?
我有一些Java应用程序抱怨不同的SSL问题,如自签名证书或不受信任的证书.
由于我没有这些应用程序的代码并且获得良好的证书太难了,我正在寻找一种可以让我强制连接的解决方案.
到目前为止,我尝试过这些,但似乎还不够:
-Dcom.sun.net.ssl.checkRevocation=false
-Djava.security.debug=certpath
Run Code Online (Sandbox Code Playgroud)
我仍然看到:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetjavax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target