1

GeoTools を使用して dted ファイルを読み取ろうとしていますが、多くの構成の問題があります。私はEclipseとJavaを使用しています。これが私のコードの要約版です:

org.geotools.coverageio.gdal.dted.DTEDReader をインポートします。

public class ViewDTED {
public static void main(String[] args) {
try {
DTEDReader reader = new DTEDReader(new File("C:\\temp\\mydted.dt2"));
System.out.println("It worked!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

実行すると、コンソールに「警告: Kakadu ネイティブ ライブラリの読み込みに失敗しました」というメッセージが表示されます。次に、UnsatisfiedLinkError のスタック トレースの出力に進みます。

私のシステム パスには次のものが含まれます: C:_path C:\Program Files\gdal-1.9.0 C:\%JAVA_HOME%\bin C:\Program Files\Common Files\ESRI\Raster\bin\ntx86

その最後のものには、名前に kakadu が含まれているマシンで見つけた唯一の dll を含む、多くの dll が含まれています。

C:_path にこれがあります:
gdal19.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdalconstjni.dll
gdal.jar

これらのファイルは、Eclipse プロジェクトのルートにもコピーされました。私のEclipseビルドパスには、gdal.jarと、C:\Program Files\geotools-2.7.4にあるすべてのjarが含まれています

私のEclipseプロジェクトのルートには、これがあります:

gdal19.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdalconstjni.dll
kakaducoresys.dll

そうそう、別の環境変数が定義されています: GDAL_DATA は "C:\Program Files\gdal-1.9.0" に設定されています

DTEDReader が必要なライブラリを見つけられない理由を誰か説明してくれませんか?

4

1 に答える 1

0

JAVA の 64 ビット インスタンスから 32 ビット DLL を呼び出そうとしていないことを確認してください。

Djatoka を Fedora Commons で動作させようとしたときに、Windows サーバー上の Kakadu で同様の問題に遭遇しました。パスの問題は別として、問題の根本的な原因は、Tomcat の 64 ビット インスタンスと Java の 64 ビット バージョンで Djatoka から無料の 32 ビット バージョンの Kakadu ライブラリをロードしようとしたことであることが判明しました。

JAVA JNI ファイルは、64/32 ビット DLL (または共有オブジェクト) との通信を試みることに関して非常にうるさいように見えたので、名前を変更した 32 ビット ファイルを使用して Kakadu の 64 ビット ライブラリ構造を偽造しても機能しません。

この問題を解決するには、Fedora Commons の 64 ビット バージョンが Djatoka 経由で Kakadu の 32 ビット バージョンと通信できるように、同じ Windows サーバーに Tomcat と JAVA の両方の別のバージョン 32 ビット バージョンをインストールする必要がありました。

于 2012-08-09T15:05:17.670 に答える