2008/7/1 David Walluck <david(a)zarb.org>:
Mary Ellen Foster wrote:
| I have one recent package that does this (specifies openjdk on F9+ and
| icedtea on F8) and one that doesn't (just wants java >= 1.5). The
| first package uses JNI and needs a Sun-like JVM to work (or at least
| it took more autotools hacking than I cared to try to make it work),
| and if I just put Requires: java it tended to grab gcj. I guess I
| could also put java > 1.5, but the issue isn't the 1.5-ness, it's the
| Sun-style JNI classes.
This is not an issue with the java-devel packages, but rather an issue
with either the upstream configure or an issue with the GCJ packaging.
If it is lack of JNI support in GCJ, that is one thing. If it is simply
that the package is expecting a differnt layout that is another.
I just did a bit of hacking, and it is possible to build the package
against gcj instead of openjdk. There were two things to fix:
- the "configure" script followed symlinks from javac to find the JNI
include dir. Since the symlinks for gcj ground out at /usr/bin/ecj, it
ended up looking for /usr/include/jni.h.
- It also wanted to hardcode "-ljava -lverify -ljvm" on the gcc line,
which isn't right for gcj
But I'm not sure if I want to make these modifications to the package.
If I build a JNI program against gcj, can the resulting .so be used
with Sun-like JVMs? How does this work? Is it documented anywhere?
Thanks,
MEF
--
Mary Ellen Foster --
http://homepages.inf.ed.ac.uk/mef/
Informatik 6: Robotics and Embedded Systems, Technische Universität München
and ICCS, School of Informatics, University of Edinburgh