Ошибка при загрузке gnu.io.RXTXCommDriver
Я пытаюсь запустить программу Java, которая перечисляет все доступные порты, используя Eclipse IDE в Ubuntu 14.04. Моя программа выглядит следующим образом:
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 ответ
Привет, у меня была эта проблема
Я использую ubantu 12.4 на старой машине, но я обнаружил, что используемая библиотека была неправильной. Вы можете скачать нужные библиотеки для этого. Вам нужно также изменить Java на Oracle и следуйте инструкциям по настройке на ubantu. это первое
После чего обновить альтернативы java и выбрать Oracle java для jvm
Инструкции ниже по ссылке здесь, я бы порекомендовал вам сделать это вручную, он научит вас, как установить это вручную, что, честно говоря, безусловно, лучший метод
https://stackoverflow.com/questions/25729592/how-to-install-jdk-8-in-ubuntu-12-04-using-tar-gz-file
Желательно следовать этим инструкциям
Как я могу установить проприетарную версию Java JDK 6/7/8 или JRE от Sun / Oracle?
Вы также должны сделать себя участником uucp и dial-out, иначе вы не сможете открыть последовательный порт
Смотрите инструкции для этого ниже
Как добавить существующего пользователя в существующую группу?
После этого вам нужен RXTX из сети, его можно скачать с http://rxtx.qbang.org/wiki/index.php/Download
Вы хотите rxtx 2.1-7r2 (стабильный) релиз для Linux
откройте zip-файл и следуйте инструкциям
Когда дело доходит до установки библиотеки, используйте файл в папке "i686-unknown-linux-gnu" и скопируйте его в папку jdk / jvm в соответствии с инструкциями, войдя в систему как root (sudo -i) для доступа с правами root.
Далее вы, возможно, захотите иде
Мое предложение снова Netbeans, просто следуйте инструкциям по установке на Linux
После того, как вы проделали ВСЕ ВЫШЕПРОЧНУЮ "ПРОЦЕСС, КОТОРЫЙ БРАТЬ ВАШЕ ВРЕМЯ"
Прошлый код в Netbeans, создав проект Это работает для меня!
См. Пример Java-кода по этой ссылке, чтобы лучше понять
http://playground.arduino.cc/Interfacing/Java
Я использую это для связи с моей платой разработки Arduino, для которой я предпочитаю писать свои собственные интерфейсы
Вам также нужно будет добавить соответствующий файл JAR в ваш проект, см. Рисунок ниже
Для этого вам нужно будет щелкнуть правой кнопкой мыши библиотеку и указать, где найти файл jar rxtxcomm, чтобы вы могли добавить его в свой проект.
У меня был огромный успех с этим PS, я использую Ubantu сейчас уже 4 недели, и уже я продан на этой ОС, это хорошо