Pi4J / pi4j-v1

DEPRECATED Java I/O library for Raspberry Pi (GPIO, I2C, SPI, UART)
http://www.pi4j.com
Apache License 2.0
1.31k stars 447 forks source link

Unable to load [libpi4j.so] using path: [/lib/raspberrypi/dynamic/libpi4j.so] #461

Closed Jeansen closed 5 years ago

Jeansen commented 5 years ago

Setup a new Raspian installation, installed Bellsoft Java 12, ran the pi4j installation script compilled a simple Main script, ran it and got the error in the title.

OS:

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian

Java:

openjdk 12.0.1-BellSoft 2019-04-16
LibericaJDK Runtime Environment (build 12.0.1-BellSoft+12)
LibericaJDK Server VM (build 12.0.1-BellSoft+12, mixed mode)

Simple Main.java class:

import com.pi4j.io.gpio.*;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;

public class Main {
    public static void main(String[] args) {
        final GpioController gpio = GpioFactory.getInstance();

        GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_15, "MyButton", PinPullResistance.PULL_DOWN);

        myButton.addListener(new GpioPinListenerDigital() {
            public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
                System.out.println(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = "+ event.getState());
            }
        });

    }
}

Compiled with: javac -classpath .:classes:/opt/pi4j/lib/'*' Main.java Run cmd: java -classpath .:classes:/opt/pi4j/lib/'*' Main

Stacktrace:

Jun 09, 2019 12:56:25 AM com.pi4j.util.NativeLibraryLoader load
SEVERE: Unable to load [libpi4j.so] using path: [/lib/raspberrypi/dynamic/libpi4j.so]
java.lang.UnsatisfiedLinkError: /tmp/libpi4j11811034683535184391.so: libwiringPi.so: cannot open shared object file: No such file or directory
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2617)
    at java.base/java.lang.Runtime.load0(Runtime.java:765)
    at java.base/java.lang.System.load(System.java:1866)
    at com.pi4j.util.NativeLibraryLoader.loadLibraryFromClasspath(NativeLibraryLoader.java:159)
    at com.pi4j.util.NativeLibraryLoader.load(NativeLibraryLoader.java:105)
    at com.pi4j.wiringpi.Gpio.<clinit>(Gpio.java:189)
    at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:69)
    at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:51)
    at com.pi4j.platform.Platform.getGpioProvider(Platform.java:125)
    at com.pi4j.platform.Platform.getGpioProvider(Platform.java:118)
    at com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:109)
    at com.pi4j.io.gpio.impl.GpioControllerImpl.<init>(GpioControllerImpl.java:53)
    at com.pi4j.io.gpio.GpioFactory.getInstance(GpioFactory.java:91)
    at Main.main(Main.java:7)

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.pi4j.wiringpi.Gpio.wiringPiSetup()I
    at com.pi4j.wiringpi.Gpio.wiringPiSetup(Native Method)
    at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:69)
    at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:51)
    at com.pi4j.platform.Platform.getGpioProvider(Platform.java:125)
    at com.pi4j.platform.Platform.getGpioProvider(Platform.java:118)
    at com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:109)
    at com.pi4j.io.gpio.impl.GpioControllerImpl.<init>(GpioControllerImpl.java:53)
    at com.pi4j.io.gpio.GpioFactory.getInstance(GpioFactory.java:91)
    at Main.main(Main.java:7)
Jeansen commented 5 years ago

My bad, I had cloned a template system (fully upgraded, but anyway a version which did not have the wiringpi package installed as default. Installing that package mad all problems go away.