0

Java テクノロジを使用した Windows プラットフォームで MAPSERVER(バージョン 6.0.1) を使用して動的 Web アプリケーションをコーディングして実行しました。現在、Ubuntu 11.10 にデプロイする必要があります。Apache Tomcat 6.0、Mapserver 6.0.1、Apache 2.0、および FWTools-2.0.1 をインストールしました (このパッケージには mapserver に必要なすべてのツールが含まれているため、他のツールをインストールする必要はないと感じました)。 . Apache Tomcat の Webapps フォルダーに war ファイルをデプロイしました (アプリケーションは配置しませんでした)。mapscript api に関連するコードが含まれていないインデックス ページも取得しました。しかし、mapscript を使用して他のサーブレットをフェッチしているときに、次のエラーが発生します...

java.lang.UnsatisfiedLinkError: no mapscript in java.library.path
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
java.lang.Runtime.loadLibrary0(Runtime.java:840)
java.lang.System.loadLibrary(System.java:1047)
edu.umn.gis.mapscript.mapscriptJNI.<clinit>(mapscriptJNI.java:23)
edu.umn.gis.mapscript.mapObj.<init>(mapObj.java:283)

再度、上記エラーが表示されたブラウザページを更新しているうちに変化が出てきましたが、

java.lang.NoClassDefFoundError: Could not initialize class    
edu.umn.gis.mapscript.mapscriptJNI
edu.umn.gis.mapscript.mapObj.<init>(mapObj.java:283)

上記の問題についてネットで検索しました。でも最後は真っ白。上記の問題についてのアイデアを提供してください。

4

2 に答える 2

3

UnsatisfiedLinkError が発生する理由については説明しませんが、代わりに、ページをリロードしたときに NoClassDefFoundError が発生する理由を説明します。

Could not initialize class ...すでに初期化を試みて失敗したクラスを初期化しようとすると、メッセージ付きの NoClassDefFoundError がJVM によってスローされます。

2 つのスタック トレースの最初の行には、次の行が含まれています。

edu.umn.gis.mapscript.mapscriptJNI.<clinit>(mapscriptJNI.java:23)

メソッド名<clinit>は、クラスの静的初期化子を示しますmapscriptJNI。そのため、UnsatisfiedLinkError がスローされた時点で、JVM はこのクラスを初期化しようとしていました。エラー メッセージを見ると、この静的イニシャライザはネイティブ コード ライブラリを読み込もうとしてmapscript失敗したようです。

この UnsatisfiedLinkError により、mapscriptJNIクラスが正常に初期化されません。JVM は、初期化に失敗したすべてのクラスの記録を保持します。これらのクラスのいずれかを再度初期化しようとすると、そのクラスを初期化できなかったことを示すメッセージとともに NoClassDefFoundError が返されます。

ページを更新すると、JVM がクラスをもう一度初期化しようとすることになりますmapscriptJNI。もちろん、このクラスは前回初期化に失敗しました。2 番目のスタックトレースには、私が説明したエラーが正確に含まれています。

つまり、ここでは UnsatisfiedLinkError が本当のエラーです。それを修正すると、もう一方はなくなります。

于 2011-12-10T13:25:54.053 に答える
0

以下の2点をチェックします。

  1. ファイルはmapscript.jarTomcat または少なくとも Web アプリケーションのクラスパスにありますか? (NoClassDefFoundError はここでの大きな手がかりです)
  2. libmapscript.soLD_LIBRARY_PATH または のいずれかにあります-Djava.library.pathか? (共有オブジェクトが見つからないため、UnsatisfiedLinkError)

Java Mapscript の実行 (Linux での) セクションの近くにあるこの投稿を見てみてください。

それが役立つことを願っています!

于 2011-12-10T11:14:58.193 に答える