Pi4J / pi4j-v2

Pi4J Version 2.0
Apache License 2.0
266 stars 54 forks source link

Gracefully handle UnsatisfiedLinkError on newAutoContext #354

Open FDelporte opened 3 months ago

FDelporte commented 3 months ago

While debugging on a non-Raspberry Pi, this error is thrown. Can this be handled in a more clean way?

java.lang.UnsatisfiedLinkError: /private/var/folders/dk/_t80gfmn49v6z329dn81hndr0000gn/T/libgpiod10971578652599589531.so: dlopen(/private/var/folders/dk/_t80gfmn49v6z329dn81hndr0000gn/T/libgpiod10971578652599589531.so, 0x0001): tried: '/private/var/folders/dk/_t80gfmn49v6z329dn81hndr0000gn/T/libgpiod10971578652599589531.so' (not a mach-o file), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/dk/_t80gfmn49v6z329dn81hndr0000gn/T/libgpiod10971578652599589531.so' (no such file), '/private/var/folders/dk/_t80gfmn49v6z329dn81hndr0000gn/T/libgpiod10971578652599589531.so' (not a mach-o file)
    at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) ~[na:na]
    at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331) ~[na:na]
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197) ~[na:na]
    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139) ~[na:na]
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2399) ~[na:na]
    at java.base/java.lang.Runtime.load0(Runtime.java:852) ~[na:na]
    at java.base/java.lang.System.load(System.java:2030) ~[na:na]
    at com.pi4j.library.gpiod.util.NativeLibraryLoader.loadLibraryFromClasspath(NativeLibraryLoader.java:256) ~[pi4j-library-gpiod-2.6.0-20240424.110836-1.jar:na]
    at com.pi4j.library.gpiod.util.NativeLibraryLoader.load(NativeLibraryLoader.java:178) ~[pi4j-library-gpiod-2.6.0-20240424.110836-1.jar:na]
    at com.pi4j.library.gpiod.internal.GpioD.<clinit>(GpioD.java:20) ~[pi4j-library-gpiod-2.6.0-20240424.110836-1.jar:na]
    at com.pi4j.library.gpiod.internal.GpioDContext.initialize(GpioDContext.java:38) ~[pi4j-library-gpiod-2.6.0-20240424.110836-1.jar:na]
    at com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalInputProviderImpl.initialize(GpioDDigitalInputProviderImpl.java:49) ~[pi4j-plugin-gpiod-2.6.0-20240424.110917-1.jar:na]
    at com.pi4j.plugin.gpiod.provider.gpio.digital.GpioDDigitalInputProviderImpl.initialize(GpioDDigitalInputProviderImpl.java:15) ~[pi4j-plugin-gpiod-2.6.0-20240424.110917-1.jar:na]
    at com.pi4j.provider.impl.DefaultRuntimeProviders.initializeProvider(DefaultRuntimeProviders.java:275) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.provider.impl.DefaultRuntimeProviders.add(DefaultRuntimeProviders.java:251) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.provider.impl.DefaultRuntimeProviders.add(DefaultRuntimeProviders.java:231) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.provider.impl.DefaultRuntimeProviders.initialize(DefaultRuntimeProviders.java:356) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.runtime.impl.DefaultRuntime.initialize(DefaultRuntime.java:316) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.context.impl.DefaultContext.<init>(DefaultContext.java:113) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.context.impl.DefaultContext.newInstance(DefaultContext.java:76) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.context.impl.DefaultContextBuilder.build(DefaultContextBuilder.java:287) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.context.impl.DefaultContextBuilder.build(DefaultContextBuilder.java:48) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]
    at com.pi4j.Pi4J.newAutoContext(Pi4J.java:73) ~[pi4j-core-2.6.0-20240424.110724-1.jar:na]