Here's hoping the following notes/observations might aid in helping you to build RXTX for an embedded device utilizing one of our Java SE Embedded binaries. The device used for this particular implementation is my current favorite: the Plug Computer.
Notes on Getting RX/TX 2.1-7-r2 Working on a Plug Computer
1. At this early juncture with Java 7, be wary of mixing Java 7
with code from older versions of Java. The class files generated
by the JDK7 javac compiler contain an updated version byte with a
value that results in older (Java 6 and before) JVMs refusing to
load these classes.
2. The RXTX download location http://rxtx.qbang.org/wiki/index.php/Download
has binaries for many platforms including Arm variants, but none
that worked for the Plug Computer, so one had to be built from
source.
3. Using the native GCC for the Plug Computer and the RXTX source,
binaries (native shared objects) were compiled for the
armv5tel-unknown-linux-gnu platform.
4. The RXTX "stable" source code found at the aforementioned site
is based on version rxtx 2.1-7r2. This code appears to be
pretty long in the tooth, in that it has no knowledge of Java
6. Some changes need to be made to accommodate a JDK 6
environment. Without these modifications, RXTX will not
build with JDK6
SUGGESTED FIX, most elegant, not recommended:
Edit the configure.in file in the source directory and look for
the following:
case $JAVA_VERSION in 1.2*|1.3*|1.4*|1.5*)
and change the second line to:
1.2*|1.3*|1.4*|1.5*|1.6*)
Upon modification, the autogen.sh script found in the rxtx source
directory must be re-run to recreate the ./configure script.
Unfortunately, this requires loading the autoconf, automake and
libtool packages (plus dependencies) and ended up resulting in
libtool incompatibilies when running the resultant ./configure
script.
RECOMMENDED FIX:
Instead, edit ./configure and search for the occurrences (there
are more than one) of
case $JAVA_VERSION in 1.2*|1.3*|1.4*|1.5*)
and change the second line to:
1.2*|1.3*|1.4*|1.5*|1.6*)
Run './configure', then 'make' to generate the RXTXcomm.jar and
platform specific .so shared object libraries.
5. You may also notice in the output of the make, that there were
compilation errors for source files which failed to find the
meaning of "UTS_RELEASE". This results in some of the shared
object files not being created. These pertain to the
non-serial aspects of RXTX. As we were only interested in
librxtxSerial.so, this was no problem for us.
6. Once built, move the following files into the following
directories:
# cd rxtx-2.1-7-r2/ # cp RXTXcomm.jar $JAVA_HOME/lib/ext # cd armv5tel-unknown-linux-gnu/.libs/ # cp librxtxSerial-2.1-7.so $JAVA_HOME/lib/arm # cd $JAVA_HOME/lib/arm # ln -s librxtxSerial-2.1-7.so librxtxSerial.so
Now Java applications which utilize RXTX should run without any java command-line additions.
The RXTXcomm.jar file can be downloaded here. To spare you the effort, a few pre-built versions of librxtxSerial-2.1-7.so are provided at this location:
If you've gone through this exercise on any additional
architectures, send them my way and I'll post them here.
Index