树莓派4B舵机控制Java应用报错:com.pi4j.wiringpi.Gpio类未找到
我是一名Java开发者,同时也是Pi4J新手,正在Raspberry Pi 4 Model B上开发一款控制舵机的Java应用。运行时出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/pi4j/wiringpi/Gpio
at me.Olex7iMatix.CatBotSoftware.Main.main(Main.java:9)
Caused by: java.lang.ClassNotFoundException: com.pi4j.wiringpi.Gpio
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 1 more
当前使用的JRE系统库为JavaSE-1.8,应用代码如下:
package me.Olex7iMatix.CatBotSoftware; import com.pi4j.wiringpi.Gpio; public class Main { public static void main(String[] args) { Gpio.pwmWrite(2, 50); } }
解决步骤
确认Pi4J依赖正确引入
该错误是JVM无法找到指定的Pi4J类,说明项目依赖缺失或构建路径配置错误。若使用Maven,需在pom.xml中添加适配Java8的Pi4J核心依赖:<dependency> <groupId>com.pi4j</groupId> <artifactId>pi4j-core</artifactId> <version>1.2</version> </dependency>手动导入jar包时,需将
pi4j-core.jar及对应本地库文件(.so)放入项目类路径。匹配Pi4J版本与Java版本
Java8仅兼容Pi4J 1.x系列版本(如1.2),Pi4J 2.x及以上版本不再支持Java8,会导致类加载失败。安装树莓派上的WiringPi依赖
Pi4J 1.x依赖WiringPi库,需在树莓派终端执行以下命令安装:sudo apt-get update sudo apt-get install wiringpi安装完成后可通过
gpio -v验证是否成功。运行时指定完整类路径
命令行运行Java程序时,需将Pi4J的jar包加入类路径:java -cp .:pi4j-core-1.2.jar me.Olex7iMatix.CatBotSoftware.Main
内容的提问来源于stack exchange,提问作者Olex7iMatix

