加载 gnu.io.RXTXCommDriver 时抛出错误

加载 gnu.io.RXTXCommDriver 时抛出错误

我正在尝试使用 Ubuntu 14.04 中的 Eclipse IDE 运行一个列出所有可用端口的 Java 程序。我的程序如下:

import gnu.io.CommPortIdentifier;

import java.util.Enumeration;


public class ListAvailablePorts {

public void list() {  
    Enumeration ports = CommPortIdentifier.getPortIdentifiers();  

    while(ports.hasMoreElements())  
        System.out.println(((CommPortIdentifier)ports.nextElement()).getName());
}
public static void main(String[] args) {
    new ListAvailablePorts().list(); 

}

}

但它显示以下警告,随后出现错误:

Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library     /usr/lib/jvm/java-8-oracle/jre/lib/amd64/librxtxSerial.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-8-oracle/jre/lib/amd64/librxtxSerial.so: /usr/lib/jvm/java-8-oracle/jre/lib/amd64/librxtxSerial.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-8-oracle/jre/lib/amd64/librxtxSerial.so: /usr/lib/jvm/java-8-oracle/jre/lib/amd64/librxtxSerial.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at ListAvailablePorts.list(ListAvailablePorts.java:11)
at ListAvailablePorts.main(ListAvailablePorts.java:17)

答案1

嗨,我也遇到了这个问题

我在一台旧机器上使用 Ubuntu 12.4,我发现使用的库不正确,您可以从此处下载正确的库。您还需要将 Java 更改为 oracle Java,然后按照在 Ubuntu 上设置的说明进行操作,请确保先执行此操作

之后更新替代方案 java 并选择 Oracle java for jvm

下面的链接上有说明,我建议你手动执行此操作,它会教你如何手动安装,公平地说,这是迄今为止更好的方法

https://stackoverflow.com/questions/25729592/how-to-install-jdk-8-in-ubuntu-12-04-using-tar-gz-file

最好遵循这些说明

如何安装 Sun/Oracle 专有的 Java JDK 6/7/8 或 JRE?

您还需要使自己成为 uucp 和 dial-out 的成员,否则您将无法打开串行端口

请参阅下面的说明

如何将现有用户添加到现有组?

之后你需要从网上下载 RXTX,可以从这里下载 http://rxtx.qbang.org/wiki/index.php/下载

您需要 Linux 版 rxtx 2.1-7r2(稳定版)

打开 zip 文件并按照说明操作

当安装库时,请使用“i686-unknown-linux-gnu”文件夹中的文件,并按照指示将其复制到 jdk / jvm 文件夹中,同时以 root 身份登录(sudo -i)以获得 root 访问权限

接下来你可能想要一个想法

我的建议是 Netbeans 再次按照 Linux 上的安装说明进行操作

完成上述所有操作后,“这是一个相当漫长的过程,请慢慢来”

将过去的代码放入 Netbeans 中创建了一个项目,这对我很有用!!

请参阅此处链接中的示例 Java 代码以获得更好的理解

http://playground.arduino.cc/Interfacing/Java

我使用它与我的 Arduino 开发板进行通信,我更喜欢为其编写自己的接口

您还需要将相关的 jar 文件添加到您的项目中,见下图

为此,您需要右键单击库并告诉 ide 在哪里找到 rxtxcomm jar 文件,以便您可以将其添加到您的项目中

我在这方面取得了巨大的成功 PS 我只使用 Ubuntu 4 周,就已经被这个操作系统深深折服了,它真的很棒

相关内容