kohsuke / akuma

Embeddable daemonization library
http://akuma.kohsuke.org/
132 stars 32 forks source link

Use Java 9 ProcessHandle APIs #15

Open jglick opened 7 years ago

jglick commented 7 years ago

When we are running on Java 9 we should be able to use ProcessHandle.current() to avoid using JNA. This would be more compatible across platforms; for example, the following has been reported on a SAP JVM:

java.lang.UnsatisfiedLinkError: /tmp/jna-…/jna….tmp: /tmp/jna-…/jna….tmp: failed to map segment from shared object: Operation not permitted
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2045)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1928)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1094)
    at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:851)
    at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:826)
    at com.sun.jna.Native.<clinit>(Native.java:140)
    at com.sun.akuma.CLibrary.<clinit>(CLibrary.java:89)
    at com.sun.akuma.JavaVMArguments.resolvePID(JavaVMArguments.java:128)
    at com.sun.akuma.JavaVMArguments.ofLinux(JavaVMArguments.java:116)
    at com.sun.akuma.JavaVMArguments.of(JavaVMArguments.java:104)
    at com.sun.akuma.JavaVMArguments.current(JavaVMArguments.java:92)
    at jenkins.slaves.restarter.UnixSlaveRestarter.canWork(UnixSlaveRestarter.java:29)

(Also cf. #14.)