2011-12-10 11 views
0

上でJava Mapscriptを実行しているが、我々はコード化され、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に関連するコードを持っていないインデックスページを持っています。上記のエラーが表示されたブラウザのページを更新しながら、ないUnsatisfiedLinkErrorとNoClassDefFoundErrorが:Ubuntuの11.10

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) 

再び我々は次のエラーを取得しているmapscriptと他のサーブレットを...フェッチ中でも、私は変更を持って、

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

私は検索しました上記の問題についてネット上で。しかし、ついに空白。上記の問題について考えてください。

答えて

0

私は、次の2つの項目を確認します:

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

は、実行中のJava Mapscript(Linuxの場合)セクションの近くに、このpostを見てみた試してみてください。

希望に役立ちます!

+0

私が行ったこと。私も2番目のことをしましたが、問題は、mapserverのインストールとroot(/ of ubuntu)のどこにでもlibmapscript.soという名前のファイルが見つかりませんでした。ブラウザをリフレッシュしている間、UnsatisfiedLinkErrorは消えてしまい、私はNoClassDefFoundErrorを取得しています。 – Vish

+0

'libmapscript.so'はあなたのLinuxサーバー上のコンパイルステップで作成されているはずです。 'configure'オプションを投稿できますか? (c.f. http://trac.osgeo.org/mapserver/wiki/JavaMapscriptUsing#againstFwtools) – buruzaemon

+0

私はあなたがポストとしてリンクを共有しているその投稿に従ってすべてを行っています。私たちがしなかったのは、インターフェイスの作成とテストだけでした。それは必要ですか? – Vish

2

なぜUnsatisfiedLinkErrorが表示されるのか説明しませんが、代わりにページをリロードしたときにNoClassDefFoundErrorを取得する理由について説明します。

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

あなたの2つのスタックトレースの最初には、メソッド名<clinit>がクラスmapscriptJNIの静的初期化子を表し、ライン

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

が含まれています。したがって、UnsatisfiedLinkErrorがスローされた時点で、JVMはこのクラスを初期化しようとしていました。エラーメッセージを見ると、この静的イニシャライザがネイティブコードライブラリmapscriptをロードしようとしましたが、失敗したようです。

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

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

要するに、UnsatisfiedLinkErrorはここでの実際のエラーです。それを修正して、もう一方は遠ざかります。

+0

mapserverの設定と「libmapscript.so」の設定について@あれこれ教えてください。 – Vish

+0

@Vish:ブルザゼモンの言う通りにする以外、 –

関連する問題