[an error occurred while processing this directive] [an error occurred while processing this directive]

Tomcat から dll を読み込むと java.lang.UnsatisfiedLinkError (on Windows)

Java から JNI で dll を読み込むためには、以下の設定が必要。

1. が設定されていないと、1つ目の dll がロードできない。1つ目の dll のロードは JVM によって行われる。
(Java での普通のファイルオープンが行われて、関数の番地にジャンプするから)
しかし 1. だけではだめで、dll がさらに dll を呼ぶときにうまくいかない。 dll から別の dll を open するときには、Windows の仕組みで open するので、Windows が参照する PATH に追加する 2. の作業が必要。

1. が設定されていないと、以下のようなエラーが出る。

java.lang.UnsatisfiedLinkError: no XXX in java.library.path
一方、1. は設定されているが 2. が設定されていないと以下のエラーになる。
java.lang.UnsatisfiedLinkError: ...\XXX.dll: Can't find dependent libraries
... いろいろ難しいですね。

上の 1. を設定するためには、java 起動時に以下のパラメータを与える。

-Djava.library.path=C:\__PATH_TO_DLL__\
Tomcat を tomcatw.exe から起動するの場合は、"Java" タブの "Java options" に上記パラメータを指定する。

2. を設定するには、コントロールパネルの "システムの詳細設定" で環境変数 PATH を更新する。 Tomcat を tomcatw.exe から起動する場合、Administrator (root) 権限になるので、 パスの設定はユーザー環境変数ではなくシステム環境変数で行う必要がある。

[an error occurred while processing this directive]