¿Por qué falla la aplicación de la API de Java Attach en Linux? (A pesar de que la construcción de Maven completa)
He estado usando la API de Java Attach (parte de tools.jar) para adjuntar a un proceso java en ejecución, y lo apagué desde dentro.
Funciona perfectamente en Windows. Sin embargo, cuando intento ejecutar el código adjunto cuando se ejecuta en Linux obtengo unjava.lang.NoClassDefFoundError
Con el siguiente seguimiento de pila para la causa ...
java.lang.ClassNotFoundException:com.sun.tools.attach.VirtualMachine...
java.net.URLClassLoader$1.run(URLClassLoader.java:202)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:190)
java.lang.ClassLoader.loadClass(ClassLoader.java:306)
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Estoy usando Maven y hasta ahora tengo esta sección, para incluir tools.jar.
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
En particular, $ {java.home} se evalúa en jre, pero incluso si lo cambio a una ruta directa a jdk, el problema es el mismo.
Estoy bastante perplejo ...