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ä:Readkey096.zip = Koko höskä
char c; c = Readkey.getChar();
Mikäli dynaamista kirjastoa (readkey.dll, libreadkey.so tai libreadkey.dylib) 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ä (Eclipse, JBuilder, NetBeans) käytettynä Readkey ei toimi alkuunkaan oikein, eli siksi aikaa kun IDE on käynnissä, kannattaa dynaaminen kirjasto ottaa pois polusta.
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
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:
gcc -fPIC -c readkeylinux.c -o readkey.o gcc -shared -Wl,-soname,libreadkey.so readkey.o -o libreadkey.so
bcc32 -c -Ic:\j2sdk1.4.1\include -Ic:\j2sdk1.4.1\include\win32 -oreadkey.obj readkeydos.c bcc32 -tWD readkey.obj
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.