2017-09-19 3 views
0

Ich versuche, ein einfaches Xbee-Beispiel auf meinem Raspberry Pi 3 arbeiten, mit dem XBee Java Lib und seinem Tutorial, aber ich möchte es ausführen, bevor Sie es in eine .jar-Datei transformieren. Ich möchte es einfach als .class Datei ausführen, sehr einfach, danach möchte ich es in ein anderes Projekt importieren. (Ich bin nicht gut mit Java, wie es möglich ist, zu sehen) Nach dem Kompilieren ich versuchte, es so auszuführen:XBee mit der Java Lib auf Raspberry Pi

java -cp $XBJL_CLASS_PATH:. com.digi.xbee.example.MainApp 

meine echo $XBJL_CLASS_PATH ist:

libs/xbee-java-library-1.2.1.jar:libs/rxtx-2.2.jar:libs/slf4j-api-1.7.12.jar:libs/slf4j-nop-1.7.12.jar:libs/android-sdk-5.1.1.jar:libs/android-sdk-addon-3.jar 

Das bedeutet, alle .jar verfügbar zu Verwendung von der XBee Java Lib.

es nicht work.I've auch gerade versucht:

java com.digi.xbee.example.MainApp 

Und ich bin immer die gleichen Fehler:

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: com/digi/xbee/api/XBeeDevice 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
     at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
     at java.lang.Class.getMethod0(Class.java:3018) 
     at java.lang.Class.getMethod(Class.java:1784) 
     at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: com.digi.xbee.api.XBeeDevice 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 7 more 

Weiß jemand, was happenning werden könnte? Es heißt, dass ich das XBeeDevice, das ich tat, nicht importierte, das libs/xbee-java-library-1.2.1.jar importierte.

PS: Der Code beginnt mit diesem:

package com.digi.xbee.example; 

    import com.digi.xbee.api.WiFiDevice; 
    import com.digi.xbee.api.XBeeDevice; 
    import com.digi.xbee.api.exceptions.XBeeException; 
    import com.digi.xbee.api.models.XBeeProtocol; 

public class MainApp { 
    /* Constants */ 
    // TODO Replace with the port where your sender module is connected to. 
    private static final String PORT = "/dev/ttyAMA0/"; 
    // TODO Replace with the baud rate of your sender module. 
    private static final int BAUD_RATE = 9600; 

    private static final String DATA_TO_SEND = "Hello XBee World!"; 

    public static void main(String[] args) { 
     XBeeDevice myDevice = new XBeeDevice(PORT, BAUD_RATE); 
     byte[] dataToSend = DATA_TO_SEND.getBytes(); 

     try { 
      myDevice.open(); 

      System.out.format("Sending broadcast data: '%s'", new String(dataToSend)); 

      if (myDevice.getXBeeProtocol() == XBeeProtocol.XBEE_WIFI) { 
       myDevice.close(); 
       myDevice = new WiFiDevice(PORT, BAUD_RATE); 
       myDevice.open(); 
       ((WiFiDevice)myDevice).sendBroadcastIPData(0x2616, dataToSend); 
      } else 
       myDevice.sendBroadcastData(dataToSend); 

      System.out.println(" >> Success"); 

     } catch (Exception e) { 
      System.out.println(" >> Error"); 
      e.printStackTrace(); 
      System.exit(1); 
     } 
     finally { 
      myDevice.close(); 
     } 
    } 
} 

Vielen Dank im Voraus.

Antwort

0

Ich habe es geschafft. : D Ich musste in meinem CLASSPATH den absoluten libs Pfad, wie /home/pi/.../libs/xbee-java-library-1.2.1.jar:...

setzen

Danach hatte ich einen anderen Fehler und sagte über die RXTX-Bibliothek. Um durch diese eins zu bekommen, brauche ich eine sudo apt-get install librxtx-java zu tun, wie es hier gesagt java.library.path location und führen Sie es wie folgt aus:

java -Djava.library.path=/usr/lib/jni -cp $XBJL_CLASS_PATH:. com.digi.xbee.example.MainApp

Hoffe, dass es jemand hilft.