Readkey Javalla

Luokka yhden merkin lukemiseen näppäimistöltä Javalla. Vaatii käyttöjärjestelmästä riippuvan dynaamisen kirjaston tai muutoin vaatii enterin painalluksen.

Käännetyn dll/so:n saat tästä:

Koodit ja kirjastot

Readkey096.zip = Koko höskä

Käyttöohjeet

char c;
c = Readkey.getChar();

Mikäli dynaamista kirjastoa readkey.dll tai libreadkey.so ei löydy polusta, toimii aliohjelma "normaalisti", eli näppäimen painalluksen perään pitää painaa [Ret]. Jos dynaaminen kirjasto on polussa, niin näppäimen painallus luetaan suoraan. Muista myös sijoittaa Readkey.java package:n mukaiseen polkuun eli hakemistoon fi/jyu/mit/ohj2

VAROITUS: IDE:stä (JBuilder, NetBeans) käytettynä Readkey ei toimi alkuunkaan oikein, eli siksi aikaa kun IDE on käynnissä, kannattaa dynaaminen kirjasto ottaa pois polusta.

Polkujen muokkaaminen

Mikäli halutaan välttää enterin painallus näppäimen lukemisessa, on dll/so-kirjasto löydyttävä sieltä mistä käyttöjärjestelmä hakee dynaamisia kirjastoja. Windowsissa kirjastoja etsitään PATH-ympäristömuuttujan määräämästä paikasta. Voit joko kopioida dll:n johonkin mistä niitä haetaan jo ennestään, kuten esim. Windows/system32 tai lisätä oma hakemistosi PATH-muuttujaan. Lisääminen tapahtuu esimerkiksi seuraavasti:

set PATH=%PATH%;c:\polku\hakemistojossakirjasto

Linuxissa on vastaavasti kopioitava .so-tiedosto esim. /usr/local/lib- hakemistoon tai tarkistettava ympäristömuuttuja LD_LIBRARY_PATH. Muuttaminen tapahtuu esimerkiksi seuraavasti(riippuu shellistä):

export LD_LIBRARY_PATH=/polku/hakemistojossakirjasto:$LD_LIBRARY_PATH

Mikäli et voi muuttaa polkua, voit ohjelmaa ajaessasi lisätä polun Java VM:n parametrinä seuraavasti:

java -Djava.library.path=polku/hakemistojossakirjasto OmaOhjelma

Mikäli käytetään Ali.jar:ia niin classpath pitää vielä lisätä, jollei ko.ympäristömuuttuja ole vielä muutettu:

java -Djava.library.path=polku/hakemistojossakirjasto -classpath n:\kurssit\ohj2\ali\Ali.jar;. OmaOhjelma

Kääntöohjeet

Ohjelman käyttämiseksi käännetään ensin Readkey.java normaalisti

javac Readkey.java

Tämän jälkeen luodaan C-ohjelmaa varten jni-otsikkotiedosto komennolla

javah -jni fi.jyu.mit.ohj2.Readkey

Tällöin on oltava hakemistorakenteen juuressa eli siellä mistä löytyy hakemisto fi

Saatu .h-tiedosto on sisällytetty ylläolevaan listaan. Sitten käännetään varsinaisesta toteutuksesta huolehtiva C-ohjelma jaetuksi kirjastoksi (kääntäjä/järjestelmäkohtaista). Kirjaston nimen tulee olla readkey. Esimerkiksi:

Linux/gcc:

gcc -fPIC -c readkeylinux.c -o readkey.o
gcc -shared -Wl,-soname,libreadkey.so readkey.o -o libreadkey.so

Win32/bcc32:

bcc32 -c -Ic:\j2sdk1.4.1\include -Ic:\j2sdk1.4.1\include\win32 -oreadkey.obj readkeydos.c
bcc32 -tWD readkey.obj

Mac/OS X

gcc -fPIC -c readkeylinux.c -o readkey.o -I /System/Library/Frameworks/JavaVM.framework/Headers/
gcc -dynamiclib -Wl,-dylib_install_name -Wl,libreadkey.dylib readkey.o -o libreadkey.dylib

Nyt ohjelmaa voidaan ajaa testata komennolla java fi.jyu.mit.ohj2.Readkey. Testiohjelma testaa näppäimistöltä lukemista. Dynaamisen kirjaston on löydyttävä kirjastopolusta.

Lisää aiheesta Sunin sivuilta.

Valid XHTML 1.1!