/
Forside
/
Teknologi
/
Udvikling
/
Java
/
Nyhedsindlæg
Login
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Stil et spørgsmål
Skriv et tip
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
Java
#
Navn
Point
1
molokyle
3688
2
Klaudi
855
3
strarup
740
4
Forvirret
660
5
gøgeungen
500
6
Teil
373
7
Stouenberg
360
8
vnc
360
9
pmbruun
341
10
mccracken
320
Problemer med at benytte JNI i en package
Fra :
Rene Just Nielsen
Dato :
03-12-01 14:20
Hej
Vi sidder med et trælst problem med Java... og JNI
Vi har et "hovedprogram" (hovedprogram.class), som benytter en klasse
(TestJNI.class) i en package (jni). "TestJNI.class" skal vha. JNI
benytte en funktion i en device driver (driver.c), som ligger i samme
directory som "hovedprogram.class".
Programmet er meget simpelt og kalder blot c-funktionen "canStart()" og
skriver derefter en eller anden kvittering ud på skærmen.
----------- Problem: ---------
Når "TestJNI" ligger i pakken "jni" og benyttes af "hovedprogram" kan
"canStart" ikke findes og vi får fejlmeddelelsen "UnsatisfiedLinkError".
Når "TestJNI" placeres i samme dir. som "hovedprogram" (og linjerne med
hhv. "package" og "import" fjernes) kan "canStart" fint køres.
Vi kan altså ikke tilgå native-metoder, der ligger i en pakke.
----------- Spørgsmål: -----------
Hvordan kan vi få "hovedprogram" til at tilgå "canStart", hvor skal de
forskellige filer (.c, .so og .h) placeres og hvordan skal det
kompileres?
Mvh.
René Just Nielsen
----------- Bonus-info: -----------
Følgende er foretaget:
1. javac hovedprogram.java
2. javah -jni jni/TestJNI (filen "jni_0002fTestJNI.h" genereres i
samme dir. som hovedprogram.class)
3. i "driver.c" rettes alle funktionsnavne til
"JAVA_jni_0002fTestJNI_funktionsNavneIJava"
4. gcc -O2 -Wall -c -I /usr/java/jdk1.3.1/include -I
/usr/java/jdk1.3.1/include/linux driver.c (filen "driver.o"
genereres)
5. gcc -shared -Wall driver.o -o libdriver.so (filen "libdriver.so"
genereres)
....og helt uden fejlmeddelelser.
Når så hovedprogrammet eksekveres ("java hovedprogram") kommer
fejlmeddelelsen "UnsatisfiedLinkError" - og de linjer, hvor kaldet af
funktionen "canStart" er på.
Christian Hemmingsen (
03-12-2001
)
Kommentar
Fra :
Christian Hemmingsen
Dato :
03-12-01 17:41
Rene Just Nielsen <rjni00@kom.auc.dk> writes:
> Når så hovedprogrammet eksekveres ("java hovedprogram") kommer
> fejlmeddelelsen "UnsatisfiedLinkError" - og de linjer, hvor kaldet af
> funktionen "canStart" er på.
Er i sikre på at .so filen ligger et sted hvor linkeren leder?
--
Christian Hemmingsen
Rene Just Nielsen (
04-12-2001
)
Kommentar
Fra :
Rene Just Nielsen
Dato :
04-12-01 08:32
Det skulle jeg mene...
Vi har dels prøvet at placere .so-filen forskellige steder (i dir'et med
vores .java-filer og i /usr/java/jdk1.3.1/bin samt
/usr/java/jdk1.3.1/jre/bin) og dels har vi prøvet at henvise til
forskellige steder med LD_LIBRARY_PATH.
/Rene Just Nielsen
Christian Hemmingsen wrote:
>
> Rene Just Nielsen <rjni00@kom.auc.dk> writes:
>
> > Når så hovedprogrammet eksekveres ("java hovedprogram") kommer
> > fejlmeddelelsen "UnsatisfiedLinkError" - og de linjer, hvor kaldet af
> > funktionen "canStart" er på.
>
> Er i sikre på at .so filen ligger et sted hvor linkeren leder?
>
> --
> Christian Hemmingsen
Brian Matzon (
04-12-2001
)
Kommentar
Fra :
Brian Matzon
Dato :
04-12-01 09:27
> Det skulle jeg mene...
>
> Vi har dels prøvet at placere .so-filen forskellige steder (i dir'et med
> vores .java-filer og i /usr/java/jdk1.3.1/bin samt
> /usr/java/jdk1.3.1/jre/bin) og dels har vi prøvet at henvise til
> forskellige steder med LD_LIBRARY_PATH.
Hvad med at placere den enten ved jeres class fil, eller i roden
af codebase?
/Brian Matzon
Søg
Alle emner
Teknologi
Udvikling
Java
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177821
Tips :
31980
Nyheder :
719565
Indlæg :
6410979
Brugere :
218912
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2026 kandu.dk. Alle rettigheder forbeholdes.