Compile JAVA API on Raspberry Pi
Ensure you have Java in your Pi, if you do not have please follow below steps:
Steps to Install Java:
1.Download latest version of java from oracle website.
2.Then copy downloaded file into Raspberry Pi.
3.Untar the file .
cmd :tar xvf <location to the file>
example :
tar xvf jdk-8u101-linux-arm32-vfp-hflt.tar.gz
4.Then add java installed location /etc/profile file like below
example :
export JAVA_HOME=/home/debian/jdk1.8.0_101
export PATH=$PATH:$JAVA_HOME/bin
Then save the file and reboot the reader
5.Then check java installed or not with below commands
cmd: which java, java -version, java , javac
Steps to Compile Java API on Pi:
1) Download the latest mercuryapi available from the ThingMagic website using the below link:
https://www.jadaktech.com/documentation/rfid/mercuryapi/
2) Copy Mercury API SDK to Raspberry Pi and extract the API SDK using unzip command(as
shown in below example).
sudo unzip mercuryapi-1.31.1.36.zip -d ./mercuryapi-1.31.1.36
3) Go to “java/samples_nb/src/samples” folder and edit the sample java application
(example:read.java), comment out the line “PACKAGES=samples;”(line number 7) and save the
file.
If you are unable to access mercury API, then change permissions using below command:
sudo chmod -R 777 mercuryapi-1.31.1.36
4) Copy read.java to Java folder using below command(you can use the below command when
you are in folder “java/samples_nb/src/samples”)
cp read.java ../../../
5) Go to Java folder and compile the application using the following command.
javac -cp .:ltkjava-1.0.0.6.jar:mercuryapi.jar <sampleapplication.java>
Example: sudo javac -cp .:ltkjava-1.0.0.6.jar:mercuryapi.jar read.java
6) The general error you could see if when Java complains about missing linux-arm.lib. When
Java complains about missing linux-arm.lib, it can't find the required libraries for using the serial
ports on your system. Here is how to recompile them:
• First in the C folder of the mercury API there is a folder:
c/proj/jni
That has the Makefile for compiling the proper lib driver. Go to “c/proj/jni” folder.
• Next find the jni.h file on your system(using below command):
$ sudo find / -name "jni.h"
You will get the result for “find” command as below
/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/jni.h
add that directory to the Makefile.jni like this:
CFLAGS += -I/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include -I/usr/lib/jvm/jdk-8-
oracle-arm32-vfp-hflt/include/linux
(jni.h needs a file called jni_md.h, hence the 2nd include)
Save and quit
• Then run “make -f Makefile.jni”. The result will be libSerialTransportNative.so.0, which
you rename to linux-arm.lib(using below command)
“mv libSerialTransportNative.so.0 linux-arm.lib”
• Now traverse back to mercuryapiX.X.X/java
• Extract the mercuryapi.jar file using command “jar xf mercuryapi.jar” or use the
instructions available at
https://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html
• Now you will have a folder named “com” in the current(java) folder.
• Copy the mercuryapi.jar file from the java directory into com/thingmagic(using below
command).
cp mercuryapi.jar ./com/thingmagic/
• Copy the linux-arm.lib file you created before into java/com/thingmagic (there are a few
other .lib files there).
7) Run the application using following command.
sudo java -cp .:ltkjava-1.0.0.6.jar:mercuryapi.jar <sampleapplication> <comport> <--ant
1,2>
Example: sudo java -cp .:ltkjava-1.0.0.6.jar:mercuryapi.jar read tmr:///dev/ttyACM0 --ant 1