Runable jar File funktioniert nicht

Naturp

Mitglied
Moing

Habe schon wieder ein Problemm :(
Auf Eclipse lauft alles wunder bar! Ich kann Comports öffnen, Joystick suchen, Joystick auslesen, mit meinem Bluetooth Modul plapern u.s.w.

Dann habe ich mit File/Export/Runable jar File/Next
Option: Copy required Libaris into a subfolder next to the generatet Jar File

Eine Jar Datei gemacht. Meine GUI funktioniert, aber alles was RXTXcomm oder Jinput benötig geht nicht mehr. Die beiden Daten sind aber im Ordner neben meinem Jar file wie es sich gehört.
Trozdem funktioniert weder Comport noch Joystick! Der Rest funktioniert ganz brav :)

Jemand ne Idee was ich falsch mache b.z. was ich falsch eingestellt habe?

Gruss
Naturp
 
Hast du das jar mal von der Command-Line gestartet? Dort können evtl. Exceptions gesehen werden. Geh in die Kommandozeile und an den Ort, wo dein Runable Jar liegt und rufe dann Java manuell auf:

Code:
java -jar NameDesJarFiles.jar
 
Danke für den Tipp :)
Wenn ich nach dem Comport suche kommt das:

Code:
Akutalisiere Serialport-Liste
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 rxtxS
rial in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
        at RRX_Konsole.aktualisiereSerialPort(RRX_Konsole.java:388)
        at RRX_Konsole$comPortSucheActionListener.actionPerformed(RRX_Konsole.j
va:562)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2
18)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.ja
a:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonMode
.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:25
)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButton
istener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6504)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6269)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4860)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:483
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2713)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
        at java.awt.EventQueue.access$000(EventQueue.java:101)
        at java.awt.EventQueue$3.run(EventQueue.java:666)
        at java.awt.EventQueue$3.run(EventQueue.java:664)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionD
main.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionD
main.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:680)
        at java.awt.EventQueue$4.run(EventQueue.java:678)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionD
main.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThr
ad.java:211)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread
java:128)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThr
ad.java:117)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

RRX_Konsole$comPortSucheActionListener.actionPerformed(RRX_Konsole.ja
va:564)
Ist der Listener für den Button der die Methode "aktualisiereSerialPort()" aufruft

RRX_Konsole.aktualisiereSerialPort(RRX_Konsole.java:388)
ist diese Zeile hier:
enumComm = CommPortIdentifier.getPortIdentifiers();

Java:
public static void aktualisiereSerialPort()
	{
		System.out.println("Akutalisiere Serialport-Liste");
		if (serialPortGeoeffnet != false) {
			System.out.println("Serialport ist geöffnet");
			JOptionPane.showMessageDialog(frame,
					"Die Port suche ist nicht möglich da ein Port geöffnet ist",
					"Port suche nicht möglich",
					JOptionPane.WARNING_MESSAGE);
			return;
		}
		
		gefundenePorts.removeAllItems();
		enumComm = CommPortIdentifier.getPortIdentifiers();	
		while(enumComm.hasMoreElements()) 
		{
			serialPortId = (CommPortIdentifier) enumComm.nextElement();
			if (serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
				System.out.println("Found:" + serialPortId.getName());
				gefundenePorts.addItem(serialPortId.getName());
				oeffnenPort.setEnabled(true);
			}
		}
		
		switch (gefundenePorts.getItemCount())
		{
		case 0:
			portStatus.setText("Kein Port gefunden"); 
			break;
		case 1:
			portStatus.setText("Port " + gefundenePorts.getSelectedItem() + " gefunden"); 
			break;
		default:
			portStatus.setText(gefundenePorts.getItemCount() + "Ports gefunden");
			break;
		}
	}

Und ich weiss leider nicht wo ich den Fehler suchen soll :(
 
Das hier ist das eigentliche Problem:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path

Dir fehlt die DLL (Windows) oder .so-Datei (Linux) im aktuellen Ordner. Natürlich kannst du die DLL oder .so auch in den i386-Ordner des Ordners lib unterhalb der Java-Installation legen. Die Datei sollte entweder rxtxSerial.dll oder librxtxSerial.so heißen, je nach dem ob Windows oder Linux.
 
Warum wird das nicht direkt in die Libs gebunden? Na Ja..jetzt gehts :)
Ein saftiges Daaankeee schön und frohe Weihnachten :)

Gruss
Naturp
 
Zurück