Ich hatte mein Problem schon einmal in dieser NG gepostet.
Habe dann einen Tipp bekommen, den LD_LIBRARY_PATH zu setzen. Dies
hatte ich vorher bereits gemacht. (export
LD_LIBRARY_PATH=/usr......./x386)
Vielleicht kann mir jemand anhand der Fehlermeldung weiterhelfen.
##############################################################
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Serial
in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java)
at RS232.main(RS232.java:23)
emautsch@IP=46:~/projekt$
########################################################
Ist es überhaupt noch nötig, den PATH für die Libs zu setzen? Wenn ich
die .so Files im richtigen Ordner ablege, dann müssten die doch
automatisch gefunden werden.
Danke
Gruss
Erik
> Ich hatte mein Problem schon einmal in dieser NG gepostet.
> Habe dann einen Tipp bekommen, den LD_LIBRARY_PATH zu setzen. Dies
> hatte ich vorher bereits gemacht. (export
> LD_LIBRARY_PATH=/usr......./x386)
> Vielleicht kann mir jemand anhand der Fehlermeldung weiterhelfen.
>
> ##############################################################
> Exception in thread "main" java.lang.UnsatisfiedLinkError: no Serial
> in java.library.path
Grosskleinschreibung ist zu beachten. Liegt bei Dir tatsaechlich
eine Datei "libSerial.so" im Verzeichnis oder nur eine "libserial.so"
(was eigentlich unter Unix ueblich ist). Bei letzterem solltest
Du dann auch ein loadLibrary("serial") verwenden und nicht
loadLibrary("Serial"). Unter Windows wuerde beides funktionieren,
daher mag dort der Fehler nie aufgetreten sein.
Gruesse, Lothar
--
Lothar Kimmeringer E-Mail: spam...@kimmeringer.de
PGP-encrypted mails preferred (Key-ID: 0x8BC3CD81)
Always remember: The answer is forty-two, there can only be wrong
questions!
"Erik Mautsch" <wikk...@t-online.de> schrieb im Newsbeitrag
news:c41137c0.03111...@posting.google.com...
> Ist es überhaupt noch nötig, den PATH für die Libs zu setzen? Wenn ich
> die .so Files im richtigen Ordner ablege, dann müssten die doch
> automatisch gefunden werden.
In welchen Ordnern gesucht wird, steht in /etc/ld.so.conf. Nach
Aenderungen ist ein ldconfig angebracht :-).
Gruss, Kurt
--
PiN - Präsenz im Netz GITmbH
Kurt Harders
http://www.pin-gmbh.com
>In welchen Ordnern gesucht wird, steht in /etc/ld.so.conf. Nach
>Aenderungen ist ein ldconfig angebracht :-).
>
>Gruss, Kurt
Danke.
Habe deinen Tipp umgesetzt und meinen Ordner dort hinzugefügt.
Leider bleibt die Fehlermeldung die gleiche...:(
Gruss
Erik
>Grosskleinschreibung ist zu beachten. Liegt bei Dir tatsaechlich
>eine Datei "libSerial.so" im Verzeichnis oder nur eine "libserial.so"
Die Grammatik sollte stimmen, da ich die .so Files mit mv dorthin
kopiert habe.
Gruss
Erik
Irgendwie hast Du meine Frage nicht beantwortet. Steht in
der Source loadLibrary("Serial") oder loadLibrary("serial")?
Entsprechend muss im lib-Verzeichnis eine libSerial.so (das
was im Stacktrace als nicht gefunden angezeigt wird) oder
eine libserial.so stehen. Steht in Deinem lib-Verzeichnis
eine libserial.so, dann musst Du entweder in der Source
loadLibrary("serial") schreiben oder einen Link mit Namen
libSerial.so auf libserial.so anlegen.
Warum hast Du sie nicht mit cp verschoben? :-)
mv steht für move und bedeutet "verschieben".
Was das ganze mit Grammatik zu tun hat, verstehe ich nicht.
Was Du genau machen willst hast Du ja nicht geschrieben, aber ich
versuche mal Deinen Stacktrace zu interpretieren:
Der UnsatisfiedLinkError sagt Dir ja, dass die gesuchte Library nicht
gefunden wird. Welche Bibliothek willst Du denn laden? Klar, irgendwas
mit serial, aber was genau steht in Deinem Quelltext? Wahrscheinlich
rufst Du nur den Konstruktor von CommPortIdentifier auf, also ist der
rxtx-Treiber nicht richtig installiert.
In der Version 2.1 wird eine rxtxSerial gesucht, imho muss die
gesuchte Bibliothek "librxtxSerial.so" heissen. Evtl. gibt es da aber
auch noch ein Mapping.
Vielleicht liest Du mal die Installationshinweise auf
http://www.frii.com/~jarvi/rxtx/index.html
und/oder postest mal was in Deiner /etc/ld.so.conf steht, was in Deinem
LD_LIBRARY_PATH steht, wo Du Deine libs denn hingeschoben hast.
Dann sehen wir weiter.
ciao Scotti
p.s. meine Vermutung: Du vermischt irgendwas, falsche Versionen etc.
>Warum hast Du sie nicht mit cp verschoben? :-)
>
>mv steht für move und bedeutet "verschieben".
Ich kann doch die Libs aus meinem entpacktenm Ordner in das benötigte
Verzeichnis verschieben, da ich sie ja dort nicht mehr benötige.
>Der UnsatisfiedLinkError sagt Dir ja, dass die gesuchte Library nicht
>gefunden wird. Welche Bibliothek willst Du denn laden? Klar, irgendwas
>mit serial, aber was genau steht in Deinem Quelltext? Wahrscheinlich
#########################
import javax.comm.*;
import java.util.*;
public class RS232 {
static CommPortIdentifier portId;
static Enumeration portList;
public static void main(String[] args)
{
System.out.println("Liste der vorhandenen Ports");
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
portId = (CommPortIdentifier) portList.nextElement();
System.out.println(portId.getName());
}
}
}
##############################
>rufst Du nur den Konstruktor von CommPortIdentifier auf, also ist der
>rxtx-Treiber nicht richtig installiert.
Der Treiber, RXTXcomm.jar, liegt im jdk/jre/lib/ext Verzeichnis und
als entpackte Variante in meinem Verzeichnis, in dem ich die
selbstgeschriebenen Klassen ablege, also im CLASSPATH.
>
>In der Version 2.1 wird eine rxtxSerial gesucht, imho muss die
>gesuchte Bibliothek "librxtxSerial.so" heissen. Evtl. gibt es da aber
>auch noch ein Mapping.
Die .so Files sind doch schon mit dabei, ich kann diese doch nicht
einfach umbenennen, oder was?
>
>Vielleicht liest Du mal die Installationshinweise auf
>http://www.frii.com/~jarvi/rxtx/index.html
>und/oder postest mal was in Deiner /etc/ld.so.conf steht, was in Deinem
>LD_LIBRARY_PATH steht, wo Du Deine libs denn hingeschoben hast.
Die Install Anleitung habe ich gelesen. Ich habe auch andere
Anleitungen gelesen, leider führte keine zum Erfolg.
in /etc/ld.so.conf stehen eine Menge
Verzeichnisse-->/usr/local/lib......................
Dort habe ich dann auch meinen Ordner angegeben, in dem meine .so
Files liegen.
Danach habe ich dann ldconf ausgeführt.
Gebe ich set in der Bash ein, zeit er mir die gesetzten
Umgebungsvariablen an. LD_LIBRARY_PATH ist hier nicht zu finden.
>
>Dann sehen wir weiter.
>
>ciao Scotti
>
>p.s. meine Vermutung: Du vermischt irgendwas, falsche Versionen etc.
Habe es die Version 2.0.5/2.1.6 (Source), sowie 1.4/1.5 (Bin)
probiert. Alles hat nix gebracht.
Die Binary Version 1.5 ist eigentlich am einfachsten. Einfach das Jar
nach..../ext kopieren, in den CLASSPATH aufnehmen,anschliessend die
.so Files nach jdk...../lib/i386 kopieren und fertig.
Damit müssten oben aufgeführtes Programm laufen und die Ports sollten
angezeigt werden...:-(
Gruss
Erik
> >p.s. meine Vermutung: Du vermischt irgendwas, falsche Versionen etc.
>
> Habe es die Version 2.0.5/2.1.6 (Source), sowie 1.4/1.5 (Bin)
> probiert. Alles hat nix gebracht.
Ich habe mir mal die Mühe gemacht und es bei mir installiert. Die
librxtxSerial.so liegt in <jdk1.4>/jre/lib/i386 und ist ein symbolischer
Link auf <jdk1.4>/jre/lib/i386/librxtxSerial-2.1-6.so
Ich habe mir mal die Version 2.1-6 geholt. Dein Programm angepasst
(import gnu.io anstatt import javax.comm) und es hat auch keine Ports
gefunden :-( Mal eine root shell geöffnet, und siehe da ein serieller
Port ist da.
Meine letzte Vermutung ist, dass Du vielleicht das falsche jre nimmst.
Kann ich leider nicht weiterhelfen.
ciao Scotti
>Ich habe mir mal die Mühe gemacht und es bei mir installiert. Die
danke :-)
>librxtxSerial.so liegt in <jdk1.4>/jre/lib/i386 und ist ein symbolischer
>Link auf <jdk1.4>/jre/lib/i386/librxtxSerial-2.1-6.so
hatte ich auch so. nur eine andere version. benutze die binary version
1.5, da ich probleme beim compilieren der 2.1'er version habe.
obwohl ich das komplette entwicklungspaket von suse (ca. 1gb)
nachinstalliert hatte, gibt er mir beim make install ein fehler in
einem .c file aus.
>
>Ich habe mir mal die Version 2.1-6 geholt. Dein Programm angepasst
>(import gnu.io anstatt import javax.comm) und es hat auch keine Ports
>gefunden :-( Mal eine root shell geöffnet, und siehe da ein serieller
>Port ist da.
er findet meine .so files auch nicht. ich denke, daran liegt es bei
mir. obwohl ich LD_LIBRARY_PATH auf <jdk1.4>/jre/lib/i386> gesetzt
habe und zusätzlich noch ld.so.conf angepasst habe--->er findet die
shared libraries nicht.
habe auch import gnu.io.*; benutzt....
was hat das mit der root shell zu tun?
>
>Meine letzte Vermutung ist, dass Du vielleicht das falsche jre nimmst.
ich benutze die, die bei suse 8.2 standardmäßig in der distri
beiliegt.
>
>Kann ich leider nicht weiterhelfen.
>
>ciao Scotti
gruss
erik
> er findet meine .so files auch nicht. ich denke, daran liegt es bei
> mir. obwohl ich LD_LIBRARY_PATH auf <jdk1.4>/jre/lib/i386> gesetzt
> habe und zusätzlich noch ld.so.conf angepasst habe--->er findet die
> shared libraries nicht.
> habe auch import gnu.io.*; benutzt....
Starte mal Dein Programm mit java -Djava.library.path=<libVerzeichnis>
<Klasse>
> was hat das mit der root shell zu tun?
>
Bei mir habe ich standardmäßig keine Rechte um auf die serielle
Schnittstelle zuzugreifen, root darf das natürlich.
> >
> >Meine letzte Vermutung ist, dass Du vielleicht das falsche jre
> >nimmst.
>
> ich benutze die, die bei suse 8.2 standardmäßig in der distri
> beiliegt.
>
Vielleicht gibt es bei Dir ein jre und ein jdk. Prüfe das mal.
> >
> >Kann ich leider nicht weiterhelfen.
> >
ich fürchte das bleibt so 8-(
ciao Scotti