Problem: cipres JNI library causes NoClassDefException in Tomcat when it's packaged together with cipres-*.jar. The only solution is to restart Tomcat each time when *.war file is reloaded; Reason: library contains JNI code can only be installed once in Tomcat, and reloading it each time with the web application's *.war file therefore will cause the exception; Solution: repackage cirpes-*.jar into cipres-*.jar and cipres-jni-*.*.jar How cipres library *.jar are packaged and installed for the web server: 1. update and install cipres; 2. run cipres-web/src/main/sript/updatecipres.sh a. repack-jni.sh + separate cipres.*.jar into one without jni and another one with jni (note that jni.jar MUST also include org/cipres/properties/Platform.class) + deploy both *.jar to maven repository servers; b. deploy2maven.sh + deploy all cipres-*.jar's dependencies to maven repo server; c. convertServiceCommands.sh + convert *.xml (which are serialized ServicesCommands objects) in src/main/resource/conf to *.xml.co to command objects which can be used by RunServiceService(). Converting them using Runtime.exec() takes too long, and it makes more sense to convert them upfront if they are not used by guigen applet. Workaround solution in Eclipse-WTP: Eclipse-WTP doesn't seem to load *.jar files from tomcat's shared/lib, so you'll encounter a ClassNotFound exception about org/cipres/jni when running cipres-web portal in Eclipse-WTP. Solution: copy catalina.properties from $CATALINA_HOME/conf/catalina.properties to wtp's org.cipres.wts.server.core/tmp0/conf/catalina.properties, look for "shared.loader" entry, replace "${catalina.base}" with a hardcoded value. See: http://chillyinside.com/blog/?p=30 I've noticed that catalina.properties in wtp directory sometimes gets updated for no apparent reason from Tomcat's file, so if you see the exception in the log, make sure the file has the hardcoded directory instead of the ${catalina.base} env variable.