Hi, OpenJDK JOL is using Attach API to get the access to Instrumentation instance without forcing user to -javaagent: the JAR. I think ByteBuddy is using similar mechanism.
How is one supposed to use Attach API these post-Jigsaw days? Before JDK 9, we could poll VirtualMachine from tools.jar, and then use the snippet from the original Javadoc: http://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html ...then, after tools.jar was gone in JDK 9, the classes were still available on classpath, and we could do, e.g.: System.getClassloader().loadClass("com.sun.tools.attach.VirtualMachine"). Now, with Jigsaw integrated, this class is not available, because jdk.attach is not a platform module. I see there are attempts to expose SPI via com.sun.tools.attach.spi.AttachProvider -- but of course, AttachProvider is also not available to feed it to ServiceLoader. This hack in JDK 9 build helps, of course: diff -r 1d992540870f make/common/Modules.gmk --- a/make/common/Modules.gmk Sat Apr 09 19:49:32 2016 +0100 +++ b/make/common/Modules.gmk Wed Apr 13 12:07:25 2016 +0300 @@ -68,6 +68,7 @@ jdk.security.jgss \ jdk.unsupported \ jdk.vm.ci \ + jdk.attach \ # # to be deprivileged What is the actual way out? Thanks, -Aleksey