Java pi4j无法使用示例代码初始化

Java pi4j无法使用示例代码初始化,java,exception,raspberry-pi,Java,Exception,Raspberry Pi,我直接使用示例代码,但仍然出现以下错误: Exception in thread "main" java.lang.ExceptionInInitializerError at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:47) at com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:102) a

我直接使用示例代码,但仍然出现以下错误:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.pi4j.io.gpio.RaspiGpioProvider.<init>(RaspiGpioProvider.java:47)
    at com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:102)
    at com.pi4j.io.gpio.impl.GpioControllerImpl.<init>(GpioControllerImpl.java:67)
    at com.pi4j.io.gpio.GpioFactory.getInstance(GpioFactory.java:85)
    at test.main(test.java:21)
Caused by: java.lang.NullPointerException
    at com.pi4j.util.NativeLibraryLoader.load(NativeLibraryLoader.java:218)
    at com.pi4j.wiringpi.Gpio.<clinit>(Gpio.java:138)
    ... 5 more
线程“main”java.lang.ExceptionInInitializeError中的异常 位于com.pi4j.io.gpio.raspioprovider(raspioprovider.java:47) 位于com.pi4j.io.gpio.GpioFactory.getDefaultProvider(GpioFactory.java:102) 位于com.pi4j.io.gpio.impl.GpioControllerImpl。(GpioControllerImpl.java:67) 位于com.pi4j.io.gpio.GpioFactory.getInstance(GpioFactory.java:85) at test.main(test.java:21) 原因:java.lang.NullPointerException 位于com.pi4j.util.NativeLibraryLoader.load(NativeLibraryLoader.java:218) 在com.pi4j.wiringpi.Gpio上(Gpio.java:138) ... 还有5个 这是我使用的页面中的代码,我只更改了要测试的类名

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;

/**
 * This example code demonstrates how to setup a listener
 * for GPIO pin state changes on the Raspberry Pi.  
 * 
 * @author Robert Savage
 */
public class test {

    public static void main(String args[]) throws InterruptedException {
        System.out.println("<--Pi4J--> GPIO Listen Example ... started.");

        // create gpio controller
        final GpioController gpio = GpioFactory.getInstance();

        // provision gpio pin #02 as an input pin with its internal pull down resistor enabled
        final GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN);

        // create and register gpio pin listener
        myButton.addListener(new GpioPinListenerDigital() {
            @Override
            public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
                // display pin state on console
                System.out.println(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = " + event.getState());
            }

        });

        System.out.println(" ... complete the GPIO #02 circuit and see the listener feedback here in the console.");

        // keep program running until user aborts (CTRL-C)
        for (;;) {
            Thread.sleep(500);
        }

        // stop all GPIO activity/threads by shutting down the GPIO controller
        // (this method will forcefully shutdown all GPIO monitoring threads and scheduled tasks)
        // gpio.shutdown();   <--- implement this method call if you wish to terminate the Pi4J GPIO controller        
    }
}
导入com.pi4j.io.gpio.GpioController;
导入com.pi4j.io.gpio.gpio工厂;
导入com.pi4j.io.gpio.gpiopinitalinput;
导入com.pi4j.io.gpio.PinPullResistance;
导入com.pi4j.io.gpio.RaspiPin;
导入com.pi4j.io.gpio.event.gpIOPiIndigitalStateChangeEvent;
导入com.pi4j.io.gpio.event.GpioPinListenerDigital;
/**
*此示例代码演示如何设置侦听器
*对于GPIO,Raspberry Pi上的引脚状态更改。
* 
*@作者罗伯特·萨维奇
*/
公开课考试{
公共静态void main(字符串args[])引发InterruptedException{
System.out.println(“GPIO侦听示例…已启动”);
//创建gpio控制器
最终GpioController gpio=GpioFactory.getInstance();
//将gpio引脚#02作为输入引脚,并启用其内部下拉电阻器
最终GPIOPIIndigitalInput myButton=gpio.provisionDigitalInputPin(RaspiPin.gpio_02,PinPullResistance.PULL_DOWN);
//创建并注册gpio引脚侦听器
myButton.addListener(新的GpioPinListenerDigital(){
@凌驾
public void handlePiopIndicatalStateChangeEvent(GPIOPiIndigitalStateChangeEvent){
//在控制台上显示pin状态
System.out.println(“-->GPIO引脚状态更改:”+event.getPin()+“=”+event.getState());
}
});
System.out.println(“…完成GPIO#02电路,并在控制台中查看侦听器反馈。”);
//保持程序运行直到用户中止(CTRL-C)
对于(;;){
睡眠(500);
}
//通过关闭GPIO控制器停止所有GPIO活动/线程
//(此方法将强制关闭所有GPIO监视线程和计划任务)

//gpio.shutdown();看来您还没有安装本机库(WiringPi)。
可以肯定的是,您是否遵循了这里的所有内容:?

安装wiringpi后,Java代码是否能像预期的那样工作?我正在尝试相同的示例(),我的问题是,只要打开联系人,就会一直收到低/高事件。