我正在尝试使用 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 周,就已经被这个操作系统深深折服了,它真的很棒