Search code examples
javaembeddedgpio

GPIO - java.lang.NoSuchFieldError: device_reference


I've inherited a project which involves a java program setting GPIO pins on a bespoke board.

  • Linux: Built with yocto, version 4.9.59
  • Java: zulu embedded, openjdk version "1.8.0_131".
  • The libdio.so is part of KURA_3.1.0.

Calling...

    GPIOPinConfig config = new GPIOPinConfig(DeviceConfig.DEFAULT,
            pinNumber, 0, 1, 3, false);
    GPIOPin pin = getPin(config);

I get...

Exception in thread "main" java.lang.NoSuchFieldError: device_reference
    at com.oracle.dio.gpio.impl.GPIOPinImpl.openPinByConfig0(Native Method)
    at com.oracle.dio.gpio.impl.GPIOPinImpl.<init>(GPIOPinImpl.java:63)
    at com.oracle.dio.gpio.impl.GPIOPinFactory.create(GPIOPinFactory.java:47)
    at com.oracle.dio.gpio.impl.GPIOPinFactory.create(GPIOPinFactory.java:38)
    at jdk.dio.DeviceManager.openWithConfig(DeviceManager.java:290)
    at jdk.dio.DeviceManager.open(DeviceManager.java:273)
    at jdk.dio.DeviceManager.open(DeviceManager.java:209)

Solution

  • Turns out I had jdk.dio-1.0.300.jar on my classpath.

    When I changed this to jdk.dio-1.0.100.jar the error went away.