2014-02-28 197 views
0

我正在開發一個將要進行串行通信的項目,並且我想將java-simple-serial-connector(jssc)作爲項目的一部分進行打包。如何將jssc.jar添加到Java項目

我不想在系統上安裝jssc.jar文件,因爲這個項目將運行一堆不同的機器,所以用我的可執行文件.jar打包.jar會容易得多。

我已經加入jssc.jar到我的構建路徑,但是當我運行程序(注意是尚未完成),我收到以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: SerialCommunication 
Caused by: java.lang.ClassNotFoundException: SerialCommunication 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

這裏是我的代碼

import jssc.*; 

public class SerialCommunication { 
    public static void main(String[] args) { 
     String[] portNames; 

     if(System.getProperty("os.name").equals("Mac OS X")){ 
      portNames = SerialPortList.getPortNames("/dev/"); 
      System.out.println("OS X"); 
     } else { 
      portNames = SerialPortList.getPortNames("COM"); 
      System.out.println("Windows"); 
     } 

     for (int i = 0; i < portNames.length; i++) { 
      System.out.println(portNames[i]); 
     } 

     SerialPort serialPort = new SerialPort(portNames[0]); 
     try { 
      serialPort.openPort();// Open serial port 
      serialPort.setParams(SerialPort.BAUDRATE_9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); 
      serialPort.writeBytes("This is a test string".getBytes()); 
      serialPort.closePort();// Close serial port 
     } catch (SerialPortException ex) { 
      System.out.println(ex); 
     } 
    } 
} 

在構建路徑下,我將jssc.jar添加爲庫和外部庫。他們兩人都以同樣的方式失敗。我也清理了解決方案。

編輯:

我的文件結構如下

/src 
    SerialCommunication.java 
/lib 
    jssc.jar 

這裏是我的構建路徑

Build path

我如何讓程序與JSSC正確執行。罐子在路徑?

+0

聽起來像你想確保SerialCommunication.class進入你的jar而不一定是jssc.jar。對?如果你想執行你的可執行jar,那麼把SerialCommunication.class放到你的jar裏,不管它的名字是什麼。 – mikemil

+0

這是一個有效的文件,我試圖通過在/ Libraries/Java/Extensions中放入jssc.jar來使其在OS X機器上工作,並且它沒有問題。當我嘗試將它包含在我的項目中時,它會生成沒有問題,但運行時會自動點擊上面的錯誤 – mightymouse3062

+0

我不明白「我已經將jssc.jar添加到我的構建路徑,但是當我運行該程序」時?你的意思是「classpath」而不是「build path」嗎?如果是的話,你是如何添加它的? –

回答

0

您正在使用的JRE運行程序> =比使用jssc.jar編譯的JDK還要多嗎?