Forum: PC-Programmierung Atmel AtUsbHidJni in Java einbinden


von robbse (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier den AT90USBKey und einen ganzen Haufen Beispiele von Atmel 
herumliegen.
Mit Hilfe von Netbeans habe ich (PC-Programmier-Anfänger) eine Anwendung 
in Java geschrieben und soweit getestet. Das Problem ist: Unter Netbeans 
läuft das Programm, wenn ich das Programm aber "für sich" starte bekomme 
ich folgende Fehlermeldung: "Exception in thread "AWT-EventQueue-0" 
java.lang.UnsatisfiedLinkError: no AtUsbHidJni in java.library.path".
In einem Dokument von Atmel heisst es außerdem : "To compile the 
project, please add to the class path of the AtUsbHidJni.jar package:
JAVAc userhid.JAVA -classpath AtUsbHidJni.jar". Wo stelle ich jetzt in 
Netbeans was ein? Bin da ein bisschen überfordert...

robbse

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

z.B. in der Kommandozeile:
JAVA -classpath AtUsbHidJni.jar;MeinProgramm.jar MeinPackage.MeineKlasse

Ansosnten ist mir nicht ganz klar was "für sich" jezt genau bedeutet... 
Kommandozeile? Jar Package? Exe Wrapper?

von robbse (Gast)


Lesenswert?

??? OK jetzt mal langsam, bitte.
Die Fehlermeldung erhalte ich wenn ich das ganze über das 
Kommandofenster starte. Eigentlich will ich aber einen Doppelklick auf 
das *.jar-File machen, welches von Netbeans erstellt wurde (das meine 
ich mit "für sich").

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja der Fehler sagt dir das er die JNI nicht findet.
Du hast folgende Möglichkeiten:
1) Das Jar in den globalen Classpath einfügen
2) Einen passenden Aufruf z.B. in einer Batch/cmd Datei erzeugen
oder
3) Lade dir mal JSmooth runter. Da kannst du dann die AtUsbHidJni.jar in 
den Classpath aufnehmen, und das Programm erzeugt dir eine exe Datei mit 
den benötigten aufrufen.

1) Würde ich dir nicht unbedingt empfehlen wenn nur falls es 
ausschließlich für dich sein soll
2) ist eigentlich ganz einfach du erzeugst eine datei, z.B. start.bat 
und trägst da folgendes ein:
1
@echo off
2
SET MYJAR = <Hier der name der von Netbeans erzeugten Jar Datei>
3
SET ATUSBJAR = AtUsbHidJni.jar
4
SET MAINCLASS = <Name deiner Hauptklasse>
5
JAVA -classpath %ATUSBJAR%;%MYJAR% %MAINCLASS%
3) Ist ganz gut wenn du das Programm später vieleicht anderen zu 
Verfügung stellen willst

von robbse (Gast)


Lesenswert?

Hi Läubi,

sorry dass ich mich jetzt erst melde; der Tag war stressig.
Werde mir jetzt mal Tor Nummer 3 vornehmen. Klingt ja sehr interessant!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Der große Vorteil von JSmooth ist halt das du da den ganzen Setup ala 
Maximaler Speicher, benötigte VM's+Libarys schön "DAU-freundlich" 
verpacken kannst, JRE wird auch installiert falls kein Java vorhanden 
ist.

von robbse (Gast)


Lesenswert?

Mmmmh ja. OK, da muss ich auch erst mal durchblicken. *.exe-Dateien 
laufen aber nicht unter Linux, oder? Aber auf jeden Fall Danke für den 
Tipp!
Zwischenzeitlich habe ich ein anderes Workaround gefunden: Mit dem 
*jar-File von Atmel kamen noch zwei DLL's. Die habe ich jetzt beide in 
den Ordner mit der von Netbeans erzuegten *.jar gelegt und: ...es klappt 
:)
Die Variante mit nur einer Datei finde ich aber eleganter; melde mich 
dann wieder.

Thx, robbse

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja angeblich kann man das irgenwei auch unter Linux zum laufen bringen 
(die Sourcen sind ja verfügbar) zumindest deuten einige Beiträge in dem 
Forum darauf hin. Unter Linux werden aber die nötigen DLL's nicht laufen 
;)

von robbse (Gast)


Lesenswert?

Ach verdammt! Da hab ich ja gar nicht drüber nachgedacht! Warum tue ich 
mir dann diesen Java-Sch*%$! an?! Naja, dann bleibe ich halt erst mal 
bei einer Windows-Lösung. Ist ja eh für die meisten erste Wahl.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Nana... was ist den das für ein Gefühlsausbruch? ;)
Schau mal ob es vieleicht irgendwelche .so Files gibt das sit sozusagen 
die "dll" für Linux.
Ansosnten KÖNNTE es sein das es für Linux auch irgendwelche Standard 
Treiber für USB tun... Da kenn ich mich nun aber garnicht aus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.