BuildingTheFactJniLibrary
Contents
Handling Problems with FaCT++ not Finding Libraries
Building The FaCT++ jni library
Because FaCT++ is written in C++, it is a little harder to get it to compile properly across platforms. In particular, a user may see errors such as
Link (dyld) error: Symbol not found: _clock$UNIX2003
or a java.lang.UnsatisfiedLinkError with a message similar to the following
libFaCTPlusPlusJNI.so: /usr/lib/libstdc++.so.6: version `GL IBCXX_3.4.9' not found (required by libFaCTPlusPlusJNI.so)
This happens because the version of FaCT++ that was compiled into the Protege 4 owl editor is not compatible with the libraries in the users operating system. If this happens on a windows or an OS X machine then send a message to the P4 mailing list because the developers probably should fix this situation. (If you are not subscribed to this list look at this web page.) However on a linux or other operating system this is much more difficult because there are too many different variants. In this case you will probably have to build you own version of FaCT++. Hence we added the following page to make the work a little easier.
The C++ compile
On Ubuntu I used
export CPLUS_INCLUDE_PATH=${JAVA_HOME}/include:${JAVA_HOME}/include/linux sudo apt-get install libxerces-c2-dev
The Java Compile
There is no build file for the java file so we go back to basic java commands. Set the owlapi variable to the location of the owlapi jar file, e.g.
owlapi=~/dev/workspaces/protege4/owleditor/plugins/org.semanticweb.owl.owlapi/lib/owlapi-bin.jar
Then the command line
javac -cp $owlapi -d classes -g `find FaCT++.Java -name "*.java"`
works - though there were some compile errors that were easily fixed and I agreed with the compiler. Then
cd classes jar -cf ../FaCTPlusPlus.jar `find . -name "*.class"`
finishes the job.