質問

私たちは、Tomcat 5.5にWARファイルを展開しているし、WEB-INF \クラスは.classesファイルが含まれている場合は、それが正常に動作しますが、私たちは、WEB-INF \ libにに.classesは、我々が得ることを含む.jarファイルを移動した場合実行時に例外がjava.lang.NoSuchMethodErrorのこと文句が、.jarファイル内の既存のクラスファイルは、クラスが含まれており、この方法は終了しません!

この上の任意の助けいただければ幸います。

役に立ちましたか?

解決

このクラスの競合のために発生する可能性があります。 (WEB-INF / libに、Tomcatの共有フォルダ、WEB-INF /クラス)どこかのクラスの古いバージョンが存在しないことを確認してください。このような場合は、実質的にTomcatがロードするクラスを知ることができません。それは方法なしで1を選ぶ場合は、あなたが経験している例外が発生します。

他のヒント

あなたはClassNotFoundError NoSuchMethodErrorを取得し、されていないので、それはあなたがどこか(jarファイルの外)クラスの古いバージョンを持っていることを意味します。あなたはそれを見つけて削除する必要があります。

このはdefentlyクラスclosinです ここで見てくださいます。http: //tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html#Class%20Loader%20Definitionsする

あなたはWEB-INF / libが比較WEB-INF / classesの下のクラスの優先順位が高いがある見ることができるように。あなたは、同じ名前(およびパッケージ)との2つのクラスを持っています。そのうちの一つがクラスである場合には、それは高い優先度を持っていることをフォルダ。彼らはlibフォルダの両方である場合、第2の一方は(ジャーは、それらのアルファ - betical順序に基づいて優先順位を持っている)最初の取得

これはあなたの状況を説明することができます。

それが役に立てば幸い   - Yonatan

は、Webアプリケーションの観点からは、クラスまたはリソースのロードは、この順序で、次のリポジトリになります。

あなたのJVM

ブートストラップクラス (上記の)システムクラスローダクラス
Webアプリケーション
の/ WEB-INF /クラス Webアプリケーションの/WEB-INF/lib/*.jar
(上記の)共通クラスローダクラス

「一般的なクラスローダ」で検索場所は$ CATALINA_BASE / confに/ catalina.propertiesでcommon.loaderプロパティによって定義されています。我々は有効/共有の場所を定義する場所です。
shared.loader = $ {catalina.base} /共有/クラス、$ {catalina.base}


/共有/ libに/ *。jarファイル

そして、上記の順序はあなたが直面している問題にしてより多くの洞察力を与えるます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top