4

Java Attach API (tools.jar の一部) を使用して、実行中の Java プロセスにアタッチし、内部からシャットダウンしました。

Windowsで完全に動作します。ただし、Linux で実行しているときにアタッチ コードを実際に実行しようとするとjava.lang.NoClassDefFoundError、原因の次のスタック トレースが表示されます...

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)

私はMavenを使用していますが、これまでのところ、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>

特に ${java.home} は jre に評価されますが、jdk への直接パスに変更しても問題は同じです。

私はかなり困惑しています...

4

1 に答える 1