Java JNAで、NativeLibrary.addSearchPathを使用することで、ネイティブライブラリ(DLLやSOなど)の検索パスをプログラムから設定することができます。
JNAを使用する場合、ネイティブライブラリ(DLLやsoなど)をパスの通った場所(WindowsだとC:Windows\System32)に置くか、Eclipseを使用している場合だと「実行構成」の「環境」に「PATH」という環境変数を作ってネイティブライブラリの検索場所を指定する、という方法がありますが、どちらも環境設定が若干面倒で、gitやsvnから開発環境をチェックアウトした直後に、その設定を忘れていてマトモに動かない、といったことが結構発生しますので、そのようなケースに便利かと思います。
以下、Tomcat(動作確認環境は Tomcat8 )での使用例です。ネイティブライブラリは WEB-INF/lib 配下に配置している前提です。
TestServletContextListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import com.sun.jna.NativeLibrary;
@WebListener
public class TestServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
String path = event.getServletContext().getRealPath("/WEB-INF/lib/");
NativeLibrary.addSearchPath("hogehoge", path);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
}
}