Open MrAndeos opened 2 years ago
I do not see your code using any slf4 logger class so I assume the pi4j-core wanted to log something and went down this path.
In my environment i have slf4j-simple-2.0.0-alpha0.jar to satisfy the logger.
Reading the following maybe you have an old level of slf4-simple and it still requires a logging implementation .
/////////////////////////////////////////////////////////////////////////// This warning, i.e. not an error, message is reported when no SLF4J providers could be found on the class path. Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem. Note that these providers must target slf4j-api 1.8 or later. Note that slf4j-api versions 2.0.x and later use the ServiceLoader mechanism. Backends such as logback 1.3 and later which target slf4j-api 2.x, do not ship with org.slf4j.impl.StaticLoggerBinder. If you place a logging backend which targets slf4j-api 2.0.x, you need slf4j-api-2.x.jar on the classpath. See also relevant faq entry. SINCE 1.6.0 In the absence of a provider, SLF4J will default to a no-operation (NOP) logger provider. /////////////////////////////////////////
PS are you compiling with java 16 and running java 11. I think the V2 project assume java 11 for both.
I compiled Pi4J with Java 11 and added slf4j-simple-1.7.36.jar to my classpath, it works on Pi4 as before and I can see that it uses slf4j-simple for logging, but here on the Pi Zero it's still exactly the same error :( And before I was using slf4j-api-1.7.32.jar, so it didn't require the implementation to work.
I see you mentioned aarch64
regarding the build. This means you are creating a 64-bit version of the application, but the Pi Zero W (1) only supports 32-bit version. I think this could be related to this problem.
I'm building Pi4J on aarch64 system because it specifically states to not try to build it on armv6: https://github.com/Pi4J/pi4j-v2/blob/9763aa3ecbd8564890b1af7e9e367f74289bad39/libraries/pi4j-library-pigpio/src/main/native/build.sh#L56
Then I want to use Pi4J with pigpio on ARMv6, so I take the generated JARs and the library from pi4j-v2/libraries/pi4j-library-pigpio/target/lib/armhf
to the Pi Zero and try to run it there.
In the "lib" directory there are two libraries generated, one in aarch64 directory and one in armhf directory. I use the aarch64 one on Pi4 and the armhf one on Pi Zero.
I downloaded the latest release (pi4j-2.1.1.zip), used the JARs from there in my classpath, extracted libpi4j-pigpio.so
from pi4j-library-pigpio.jar/lib/armhf
and put it in my explicitly defined path (/home/pi/test/lib/
).
This now works on Pi Zero. So looks like something that was recently changed causes the native library to break on ARMv6.
The Pi4J deployed snapshot and release builds are getting cross-compiled using GitHub CI workflows on Intel/AMD x64 machines. So it sounds like something about the ARM64 cross-compiled build of the ARMHF (ARMv6) native libraries are not getting compiled or linked properly?
I suspect this issue https://github.com/Pi4J/pi4j-v2/issues/28 may be related.
Then this is almost certainly the case here. I remember cross-compiling Pi4J on x86-64 machine about half a year ago and there were no issues running the compiled libraries on Pi Zero.
Was this issue fixed? I'm getting the following error when testing pi4j 2.x on my Raspberry Pi Zero W (ARMv6):
...
Caused by: com.pi4j.library.pigpio.PiGpioException: PIGPIO ERROR: PI_INIT_FAILED; pigpio initialisation failed
...
When using pi4j 1.4 it works
Hello! So I'm building the latest version of the library on my Pi4:
It builds just fine and I'm able to use the generated JARs together with appropriate (aarch64) libpi4j-pigpio.so library, placed in a custom directory that's set like so:
System.setProperty("pi4j.library.path", "/home/pi/test/lib/");
This all works on Pi4, together with the latest pigpio cloned from joan2937's github and compiled on Pi4.But the problem occurs when I try to run my application on Pi Zero W. I have this exact same setup. The pigpio native libs are compiled on the Pi Zero, and I'm using the "armhf" version of libpi4j-pigpio.so. Java is the latest build from azul that supports ARMv6HF (11.0.15+10). This is what I see in the console:
And here is the error report as well as my Java code: hs_err_pid1411.log pi4j-minimal-test-app.zip
I will appreciate any help in getting this to work :)