首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主线程java.lang.NoClassDefFoundError异常: com/pi4j/io/gpio/GpioFactory

主线程java.lang.NoClassDefFoundError异常: com/pi4j/io/gpio/GpioFactory
EN

Stack Overflow用户
提问于 2015-09-08 04:33:02
回答 4查看 3.3K关注 0票数 0

在尝试运行java程序时遇到这些错误

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: com/pi4j/io/gpio/GpioFactory
        at FileWatch.main(FileWatch.java:53)
Caused by: java.lang.ClassNotFoundException: com.pi4j.io.gpio.GpioFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

这是我的代码,

代码语言:javascript
复制
public class FileWatch {

        static String clkID;
        static String clkID2;
        static String ts;
        static String ts1;
        static boolean done = false;
        static boolean REdone = false;
        static boolean finished = false;
        static boolean ready;

        static String host ="jdbc:mysql://localhost/dancers";
        static String username ="root";
        static String password ="beaker19";


        public static void main(String[] args) throws IOException,
                        InterruptedException {

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

        // provision gpio pin #01 as an output pin and turn on
        final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.HIGH);


                while (true) {
                        done = false;
                        REdone=false;
                        checkFile();
                        pin.high();
                        Thread.sleep(3000);
                        REcheckFile();
                        Thread.sleep(500);
                        //Thread.
                        if (clkID.equals(clkID2)) {

                        uploadTimes();

                        }

                        else {
                                System.out.println("Wrong matching ID's");
                        }
                        Thread.sleep(1000);
                        pin.low();
                 }
}

我从来没有使用过pi4j,所以我不知道我错在哪里!!这似乎是一个gpiofactory类的问题,但我没有对它做任何更改,也不确定我在互联网上读到的内容是什么这是一个正在导入的包的问题……

我是这样编译的:

代码语言:javascript
复制
pi@raspberrypi ~/rpi2ardu $ javac -cp .:mysql-connector-java-3.1.1.jar:/opt/pi4j/lib/'*' FileWatch.java
EN

回答 4

Stack Overflow用户

发布于 2017-05-26 22:02:32

我解决了同样的问题。

查找您的应用程序清单文件。缺省情况下会创建一个文件,它位于源代码树=>META-INF=>MANIFEST.MF

简单地,添加一个类路径到pi4j JAR文件所在的位置,它应该如下所示:

代码语言:javascript
复制
{        
    Manifest-Version: 1.0
    Main-Class: yourclassname.Main
    Class-Path: /opt/pi4j/lib/pi4j-core.jar /opt/pi4j/lib/pi4j-device.jar /opt/pi4j/lib/pi4j-gpio-extension.jar /opt/pi4j/lib/pi4j-service.jar
}

构建您的文件,并执行它。

票数 1
EN

Stack Overflow用户

发布于 2016-03-03 04:32:10

我也遇到过类似的情况,下面的链接帮助了我。我忘记做的是在类路径中添加当前工作目录。

".“是用于当前工作目录的

Raspbian上的示例

java。:/ -classpath /pi4j/lib/‘*’FileWatch

有答案的链接-https://www.raspberrypi.org/forums/viewtopic.php?f=34&t=23239

票数 0
EN

Stack Overflow用户

发布于 2017-05-26 23:08:25

不要使用'*‘

代码语言:javascript
复制
-cp .:mysql-connector-java-3.1.1.jar:/opt/pi4j/lib/'*'

只需按如下方式使用它,

代码语言:javascript
复制
-cp .:mysql-connector-java-3.1.1.jar:/opt/pi4j/lib

代码语言:javascript
复制
export CLASSPATH=mysql-connector-java-3.1.1.jar:/opt/pi4j/lib/pi4j-core.jar:/opt/pi4j/lib/pi4j-device.jar:/opt/pi4j/lib/pi4j-gpio-extension.jar:/opt/pi4j/lib/pi4j-service.jar:$CLASSPATH

以备将来使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32445695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档