2017-04-04 22 views
0

私はpi4jのライブラリにインクルードされたプロジェクトのjarファイルをビルドしました。私はラズベリーLCD 1602とPI4Jラズベリー

sudo java -jar LCD1602.jar 

上のjarファイルを起動しようとすると、私はこのエラーを持っている:

Exception in thread "main" java.lang.NoClassDefFoundError: com/pi4j/io/gpio/GpioFactory 
     at lcd1602.LCD1602.main(LCD1602.java:19) 
Caused by: java.lang.ClassNotFoundException: com.pi4j.io.gpio.GpioFactory 
     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) 
     ... 1 more 

ソースコード:

package lcd1602; 

import com.pi4j.component.lcd.LCDTextAlignment; 
import com.pi4j.component.lcd.impl.GpioLcdDisplay; 
import com.pi4j.io.gpio.GpioController; 
import com.pi4j.io.gpio.GpioFactory; 
import com.pi4j.io.gpio.RaspiPin; 
import com.pi4j.system.NetworkInfo; 

public class LCD1602 { 
    public final static int LCD_ROW_1 = 0; 
    public final static int LCD_ROW_2 = 1; 

    public static void main(String[] args) throws Exception { 

     System.out.println("16X2 LCD Example with Raspberry Pi using Pi4J and JAVA"); 

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

     // initialize LCD 
     final GpioLcdDisplay lcd = new GpioLcdDisplay(2, // number of row supported by LCD 
               16,  // number of columns supported by LCD 
               RaspiPin.GPIO_23, // LCD RS pin 
               RaspiPin.GPIO_24, // LCD strobe pin 
               RaspiPin.GPIO_04, // LCD data bit D4 
               RaspiPin.GPIO_17, // LCD data bit D5 
               RaspiPin.GPIO_27, // LCD data bit D6 
               RaspiPin.GPIO_22); // LCD data bit D7 

     lcd.clear(); 
     Thread.sleep(1000); 

     lcd.write(LCD_ROW_1, "WeArGenius"); 
     lcd.write(LCD_ROW_2, " ???"); 

     Thread.sleep(2000); 
     for (String ipAddress : NetworkInfo.getIPAddresses()){ 
      System.out.println("IP Addresses  : " + ipAddress); 
      lcd.writeln(LCD_ROW_2,ipAddress,LCDTextAlignment.ALIGN_CENTER); 
     } 

     gpio.shutdown(); 
    } 
} 

を私は手動で内部pi4jの瓶のファイルをインポートしましたプロジェクト。助けてくれてありがとう

+0

ため、このコード。コンパイル時のクラスパスは、ランタイムを実行することを意味するものではなく、自動的に同じものになります。それらは静的にCのようにコンパイルされていません – slipperyseal

+0

また、pi4jが必要なネイティブライブラリをインストールするので、piにpi4jをインストールしていることを確認してください – slipperyseal

答えて

0

SOlved、jarディレクトリにlibフォルダ(pi4jのすべてのjarを含む)を追加しました。

+0

次に、問題を「閉じる」ソリューションとして独自の答えをマークすることを恐れないでください;) –

0

package i2clcddisplaytest; 
 

 
import com.pi4j.component.lcd.impl.I2CLcdDisplay; 
 
import com.pi4j.component.lcd.*; 
 

 
public class I2cLcdDisplayTest { 
 

 
    public static void main(String[] args) throws Exception { 
 
     I2CLcdDisplay lcd = new I2CLcdDisplay(
 
       2, //  * @param rows 
 
       16, //  * @param columns 
 
       1, //  * @param i2cBus 
 
       39, //  * @param i2cAddress 
 
       3, //  * @param backlightBit 
 
       0, //  * @param rsBit 
 
       1, //  * @param rwBit 
 
       2, //  * @param eBit 
 
       7, //  * @param d7 
 
       6, //  * @param d6 
 
       5, //  * @param d5 
 
       4 //  * @param d4 
 
     ); 
 
     lcd.write(1, "test", LCDTextAlignment.ALIGN_CENTER); 
 
    } 
 
}

あなたはクラスパスにpi4jのjarファイルを含める必要がLCM1602 IIC V1

関連する問題