4

現在、Struts2 フレームワークを使用して小さな Web アプリケーションを作成しようとしています。(日食)

現在、web.xml (WEB-INF フォルダー内) ファイルでフィルターを使用して、struts.xml ファイル (src フォルダー内) に制御を移そうとしています。(これは私がチュートリアルで見たものです)。

フィルターに使用しているコードは次のとおりです。

<filter> 
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

次のエラーが発生し続けるため、TomcatがフィルターのJARファイルでクラスを見つけているとは思わない:

java.lang.NoClassDefFoundError: org.apache.struts2.dispatcher.ng.InitOperations.cleanup(InitOperations.java:114) の com/opensymphony/xwork2/ActionContext org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init の(StrutsPrepareAndExecuteFilter.java:60)
...しばらく続きます。

Struts の Web ページから Jar ファイルをダウンロードしました。ビルド パスの設定方法は次のとおりです。

プロジェクトを右クリックしてプロパティに移動しました

Java Build Path セクションに移動し、新しいライブラリを作成しました

すべての Jar ファイルをそのライブラリに追加し、この Web アプリケーションのビルド パスに割り当てました

次に、この Jar ライブラリを展開アセンブリに追加して、実行時に WEB-INF/lib フォルダーに展開されるようにしました。

私が従ったチュートリアルで動作するように、これは動作するはずです! しかし、それは私にとってはうまくいきません。

プロジェクトを実行し、PC を介してプロジェクトが保存されている場所に移動すると、WEB-INF/lib フォルダーを見ると、そこに Jar ファイルがまったくありません。これが問題の原因でしょうか? それともこれが普通ですか?

助けてくれてありがとう、それは大歓迎です!

編集

私が使用しているjarファイルは次のとおりです。

commons-fileupload-1.2.2
commons-io-2.0.1
commons-logging-1.1.1
commons-logging-api-1.1
freemarker-2.3.19
javaassist-3.11.0.GA
ognl-3.0.6
struts2-core-2.3.8
xwork-core-2.3.8
commons-lang-2.4

解決済み - 新しいビルドでプロジェクトを完全に再起動することで解決しました! 更新 - すべての jar を削除して jar ライブラリを再作成し、それをビルド パス/Deplyment Assembly に再割り当てすることで、古いビルドも修正しました (ただし、デバッグ中にこれを何百回も行いました)。

次に、古い Tomcat サーバーを削除し、新しいサーバーを割り当てました。

何が修正されたのか完全にはわかりませんが、今のところすべて機能しています

4

1 に答える 1

2

マーカー ビューを開くと、Classpath Dependency Validator Message 警告グループが表示されます。そのグループを展開すると、次のような警告が表示されます。

クラスパスエントリ??? エクスポートまたは公開されませんRuntimeClassNotFoundExceptions が発生する場合があります。

これらの警告を右クリックし、[クイック修正] を選択します。これにより、WEB-INF/lib に含めるクラスパス エントリをマークできます。

于 2013-02-28T16:21:00.577 に答える