RS232 - UnsatisfiedLinkError: no rxtxSerial

Bobo222

Mitglied
Hallo Leute,

ich habe folgende Exception-fehler(oder wie man das nennt):
Code:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
	at connection.RS232_Conn.open(RS232_Conn.java:32)
	at connection.MainFrame$my_Listener.actionPerformed(MainFrame.java:48)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Code:
Java:
package connection;

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.IOException;
import java.io.InputStream;

public class RS232_Conn implements SerialPortEventListener {
	private CommPortIdentifier portId;
	private SerialPort serialPort;
	private InputStream inputStream;
	private int baudrate;
	private boolean open_success = false;
	private boolean close_success = true;

	public void serialEvent(SerialPortEvent event) {
		System.out.println("serialPortEventlistener");
		if(event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
			serialPortDatenVerfuegbar();
		}
	}
	
	public RS232_Conn(int baudrate) {
		this.baudrate = baudrate;
	}
	
	public void open() {
		if (close_success == true) {
			try {
				portId = CommPortIdentifier.getPortIdentifier("COM1");
				serialPort = (SerialPort) portId.open("Bluetooth_Modul", 2000);
				serialPort.setSerialPortParams(baudrate, SerialPort.DATABITS_8,
						SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
				serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);

				inputStream = serialPort.getInputStream();

				serialPort.enableReceiveTimeout(1000);
				serialPort.notifyOnDataAvailable(true);
				serialPort.addEventListener(this);

				open_success = true;
				close_success = false;
				System.out.println("Open Serialport");
			} catch (Exception e) {
				System.out.println(e);
			}
		} else {
			System.out.println("Serialport already opened");
		}
	}

	public void close() {
		if (open_success == true) {
			System.out.println("Close Serialport");
			serialPort.close();
			open_success = false;
			close_success = true;
		} else {
			System.out.println("Serialport already closed");
		}
	}
	
	public void serialPortDatenVerfuegbar() {
		 	byte[] read_buffer = new byte[20];
			try {
				while (inputStream.available() > 0) {
					int empfangen = inputStream.read(read_buffer);
					System.out.println(empfangen);
				}
			} catch (IOException ioe) {
				System.out.println(ioe);
			}
			String nachricht = new String(read_buffer);
	        System.out.println(nachricht);
	}
}

Ich habe zwar gegoogelt, aber hat mir leider nicht wirklich weitergeholfen. Kann mir jemand bei dem Problem weiterhelfen bitte?

mfg
 
Zuletzt bearbeitet:

Bobo222

Mitglied
Danke, aber das habe ich doch gemacht:

Project/Properties/Java Build Path/Add External JARs --> "RXTXcomm.jar" geaddet.

Ist das nicht das?
 

Bobo222

Mitglied
Danke!

Naja ich verwende ja eclipse. Ich drücke auf den grünen play Button da oben und dann erscheint halt das selbst gemachte Fenster mit dem ON und OFF button. Beim On-Button wird halt das open() ausgeführt und dann kommt der Stackrace bei close() ist alles in Ordnung.

Ich bin gerade etwas verwirrt. Warum muss ich jetzt irgendwas mit der nativen Library einstellen?

Sowas hatte ich noch nie, normalerweise, wenn man eine Bilbiothek von was auch immer einfügen will, mache ich das dann, wie ich in meinen letzten Beitrag beschrieben habe und alles funktioniert.

Ich verstehe nicht ganz.
 

VfL_Freak

Top Contributor
Moin,

sorry, aber ist natürlich schwer nachzuvollziehen, was Du wo eingestellt hast oder eben auch nicht ...

Klick' mal neben dem grünen Button (ich hoffe Du einst "Konfiguration ausführen") auf den Pfeil und wähle "Konfiguration verwalten". Dann links im Baum Dein Projekt anklicken und dann rechts den Reiter "Klassenpfad". Dort sollte nu8n wieder Dein Projekt auftauchen. Öffne es und Du solltest Dann darunter die LIBs aus dem Klassenpfad sehen.
Ist dort die Bibliothek angegeben?
Poste ggf. mal eine ScreenShot davon !

Gruß
Klaus
 

Bobo222

Mitglied
Danke! Ja da ist eine Library drinnen(siehe bild). Das Schwarze ist einfach der Pfad zum eclipse-Workspace und im Projektordner "Bluetooth" ist diese .jar.
 

Anhänge

  • java_problem.png
    java_problem.png
    76,3 KB · Aufrufe: 62
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
hmm,

da taucht sie vermutlich auch im "PaketExplorer" unter "Referenzierte Bibliotheken"auf, oder ?

Nutzt Du eine Manifestdatei?
Dort sollte sie dann auch im Classpath ein getragen sein ...

Und die Exception kommt nur, wenn Du Dein Programm, wie du beschrieben hast, aufrufst?

Gruß
Klaus
 

Bobo222

Mitglied
hmm, da taucht sie vermutlich auch im "PaketExplorer" unter "Referenzierte Bibliotheken"auf, oder ?

Ja, hier taucht sie auch auf.

Nutzt Du eine Manifestdatei?
Dort sollte sie dann auch im Classpath ein getragen sein ...

Hm, in einer Manifestdatei stehen ja Zusatzinfos, der Library right? Wo wird die Datei gespeichert? Im Projektordner? Falls ja, dort ist keine zu finden.

Und die Exception kommt nur, wenn Du Dein Programm, wie du beschrieben hast, aufrufst?

Ja, genau.(also anders wüsste ich es auch nicht, wie ich sonst das Programm starten könnte)
 

VfL_Freak

Top Contributor
Moin,

Ja, hier taucht sie auch auf.
ok :)

Hm, in einer Manifestdatei stehen ja Zusatzinfos, der Library right? Wo wird die Datei gespeichert? Im Projektordner? Falls ja, dort ist keine zu finden.
Wenn ja, dann dort ... Du brauchst sie aber wohl nur, wenn eine JAR-Datei erzeugen willst!

Ja, genau.(also anders wüsste ich es auch nicht, wie ich sonst das Programm starten könnte)
nun ja, halt in der CMD-Box ... etwa so wie hier beschrieben:
Galileo Computing :: Java ist auch eine Insel - 19 Die Werkzeuge des JDK

-----------------------------

Mal ganz dumm gefragt: der angegebene Pfad stimmt? Keine Tippfehler= Groß-/Kleinschreibung etc. ?


Schau mal in die Umgebungsvariablen des Rechners (meist unter "Systemvariablen"): auch dort sollte Pfad , in dem die zugehörige jar-Datei liegt, eingetragen sein ...

Gruß
Klaus

[EDIT]
Da ich diese LIB nicht kenne (nutze "SerialIO"), habe noch mal kurz gegoogled:

rxtx - java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path - Stack Overflow
eclipse - How to add rxtxSerial in java.library.path? - Stack Overflow
fedora - java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver - Stack Overflow
------
dies sieht sehr gut aus :)
http://www.java-forum.org/allgemein...ttstelle-ansteuern-processing-bibliothek.html

[/EDIT]
 
Zuletzt bearbeitet:

Bobo222

Mitglied
Danke dir!

Also bei der Umgebungsvariable "Path" da steh keinen Pfad, der mit Java/eclipse zusammenhang hat. Welchen Pfad soll ich denn da jetzt dazufügen? Den Projekt-Pfad, wo die RXTXcomm.jar drinnen ist?

Und warum muss ich das machen? Muss ich das immer machen, wenn ich eine externe Library einfüge?
 

VfL_Freak

Top Contributor
Moin,

ich habe mir auch den letzten Link, den ich zuvor gepostet hatte, nochmal zu Gemüte geführt!
Dabei fiel mir folgendes auf:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
Das enstscheidende Wort ist loadLibrary, d. h. es wird hier nicht versucht, eine jar-datei zu laden, sondern die "rxtxSerial.dll" !!!
Dies ist die LIB, für den nativen Zugriff auf das OS rsp. die seriellen Schnittstellen.
Wo liegt die bei Dir?

Ggf. falls mal nach C:\Windows\system32 kopieren!

Gruß
Klaus
 

Bobo222

Mitglied
Danke!

Die .dll-datei gehört auch ins java/bin-verzeichnis und jetzt kommt folgender stack-trace:

Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
gnu.io.NoSuchPortException

Also es funktionieret schonmal, nur findet er keinen Port. Ich arbeite auf einen Laptop, der keinen ComPort hat, kann ich das irgendwie einstellen, dass sich das ganze auf einen USB-Port beziehen soll, ist doch auch seriell.
 

VfL_Freak

Top Contributor
Moin,

Also es funktionieret schonmal, nur findet er keinen Port. Ich arbeite auf einen Laptop, der keinen ComPort hat, kann ich das irgendwie einstellen, dass sich das ganze auf einen USB-Port beziehen soll, ist doch auch seriell
Also, wie ich schon schrieb, ich kenne diese spezielle LIB nicht !!

Aber wenn ich raten müsste, würde ich sagen JA!
Wir nutzen hier in der Firma "SerialIO" ... und ich speziell, um auf Null-Modem-Kabel, die auf verschiedenen USB-Ports hängen (können), zuzugreifen.
Dazu habe ich mir eine eigene Klasse erstellt, an die ich dann die ComPort-Nummer (ggf. eben aucheine USB-Schnittstelle) sowie Bitrate, Start- und Stop-Bits sowie KNZ für Parität und HandShaking übergeben kann.

Ob und inwieweit dies mit Deiner LIB geht, weiß ich nicht!
Schau' doch einfach in die Doku oder API :pueh: ;)

Gruß
Klaus
 

DaveIT

Mitglied
Unter windows kannst du im gerätemanager beim gewünschten usb-anschluss normalerweise den port auswählen.
mit welchem gerät willst du kommunizieren? ist der chiptreiber installiert bzw. wird das gerät korrekt erkannt? soweit ich weiß gibt es unterschiedliche chips zum umstetzen von usb auf com.

lass dir mal alle verfügbaren ports ausgeben. mit
Code:
CommPortIdentifier.getPortIdentifiers()
sollte das möglich sein.

viel erfolg
 

Bobo222

Mitglied
Also das Gerät habe ich leider nicht da, aber ich will mit irgendeinen Terminal das Gerät ersetzen. Ich denke das kann man ja machen oder?

Weiß jemand wie ich das machen könnte? Mit Terminal irgendwie auf virtuellen COM-port zugreifen und dann in java das einstellen.
 

DaveIT

Mitglied
Hm ich verstehe leider nicht genau was du machen willst.

Wenn du kein gerät verbunden hast kannst du klarerweise keine kommunikation starten.
zum testen emuliere ich eigentlich selten schnittstellen, die kommunikation läuft ja über bereits vorhandene protokolle. wenn du wissen willst ob du korrekt sendest und empfängst kannst du direkt mit dem io stream arbeiten.

zum emulieren:

Link

hier wird genau diese frage erörtert.

hab ich deine frage richtig verstanden und beantwortet oder meinst du etwas anderes?

viel erfolg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
T RS232/USB-Signale in Java weiterverarbeiten Java Basics - Anfänger-Themen 2
C Ansteuerung RS232 Schnittstelle Java Basics - Anfänger-Themen 15
N Rs232 an Laptop anschliessen und ansteuern Java Basics - Anfänger-Themen 11
J RxTx/RS232 Kommunikation (TwoWay) Java Basics - Anfänger-Themen 10
R Rxtx Rs232: I Can t send to the port Java Basics - Anfänger-Themen 5
R rxtx und RS232 Java Basics - Anfänger-Themen 2
J Rs232 (ComPORT) unter Java Java Basics - Anfänger-Themen 15
A RS232 und Microcontroller - einige Fragen Java Basics - Anfänger-Themen 7
G RS232 Java Basics - Anfänger-Themen 2
W RS232: Daten empfangen,bearbeiten,ausgeben Java Basics - Anfänger-Themen 2
M Bitmuster eines Strings über RS232 senden Java Basics - Anfänger-Themen 5
G String zur RS232 senden und mit cr abschließen! Java Basics - Anfänger-Themen 4
G UnsatisfiedLinkError erscheint nur über Console Java Basics - Anfänger-Themen 6
S Umgebungsvariable Exception in thread "main" java.lang.UnsatisfiedLinkError: no J3D in java.librar y.path Java Basics - Anfänger-Themen 15
K Unsatisfiedlinkerror?! Java Basics - Anfänger-Themen 7
J java.lang.UnsatisfiedLinkError: Java Basics - Anfänger-Themen 9
U UnsatisfiedLinkError -JD2XX.dll - Bin am verzweifeln Java Basics - Anfänger-Themen 10
J java.lang.UnsatisfiedLinkError: Java Basics - Anfänger-Themen 3
S JNI: UnsatisfiedLinkError Java Basics - Anfänger-Themen 14
G java.lang.UnsatisfiedLinkError: no JavaAccessBridge Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben