【问题标题】:How to add jssc.jar to Java Project如何将 jssc.jar 添加到 Java 项目
【发布时间】:2014-03-02 22:58:15
【问题描述】:

我正在做一个将进行串行通信的项目,我想将 java-simple-serial-connector (jssc) 打包为项目的一部分。

我不想在系统上安装 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.jar 让程序正确执行?

【问题讨论】:

  • 听起来你想确保 SerialCommunication.class 进入你的 jar 而不一定是 jssc.jar。正确的?如果你想执行你的可执行 jar,那么将 SerialCommunication.class 放入你的 jar,不管它的名字是什么。
  • 这是一个有效的文件,我试图通过将 jssc.jar 放在 /Libraries/Java/Extensions 中来让它在 OS X 机器上工作,它没有问题。当我尝试将它包含在我的项目中时,它会毫无问题地构建,但是当它运行时,会自动遇到上面的错误
  • 我不明白“我已将 jssc.jar 添加到我的构建路径但是当我运行程序时”?你的意思是“类路径”而不是“构建路径”?如果是,您是如何添加的?
  • 我像这样将它添加到构建路径stackoverflow.com/questions/18870213/…

标签: java eclipse jar


【解决方案1】:

您用于运行程序的 JRE >= 是否比编译 jssc.jar 时使用的 JDK?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2022-01-23
    • 2012-06-28
    • 2017-03-04
    相关资源
    最近更新 更多