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
這裏是我的構建路徑
我如何讓程序與JSSC正確執行。罐子在路徑?
聽起來像你想確保SerialCommunication.class進入你的jar而不一定是jssc.jar。對?如果你想執行你的可執行jar,那麼把SerialCommunication.class放到你的jar裏,不管它的名字是什麼。 – mikemil
這是一個有效的文件,我試圖通過在/ Libraries/Java/Extensions中放入jssc.jar來使其在OS X機器上工作,並且它沒有問題。當我嘗試將它包含在我的項目中時,它會生成沒有問題,但運行時會自動點擊上面的錯誤 – mightymouse3062
我不明白「我已經將jssc.jar添加到我的構建路徑,但是當我運行該程序」時?你的意思是「classpath」而不是「build path」嗎?如果是的話,你是如何添加它的? –