1

Springsource Tool Suite(Eclipse Junoに基づく)のサーバーでプロジェクトを実行しようとしています。以前のバージョンのEclipseで実行されていました。これはMavenプロジェクトであり、コマンドラインから正常にビルドされます。

私が今見ている問題は、で参照されているフィルタークラスが見つからないことweb.xmlですが、以前のリリースのEclipseでは、このクラスを見つけるのに問題はありませんでした。filter句は次のweb.xmlようになります。

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>com.foo.bar.dao.hibernate.HibernateSessionFilter</filter-class>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
    </init-param>
</filter>

内部のTomcat6サーバーで実行しようとすると、次のエラーが発生します。

SEVERE: Exception starting filter hibernateFilter
java.lang.ClassNotFoundException: com.foo.bar.dao.hibernate.HibernateSessionFilter

私が実行するとjar tf app.war | grep HibernateSessionFilter、クラスはwarファイルにあります:

$ jar tf imagewar.war | grep HibernateSessionFilter
WEB-INF/classes/com/foo/bar/dao/hibernate/HibernateSessionFilter.class

おそらくそれはWEB-INF/クラスに属していないのでしょうか?

私が言ったように、このアプリは内部サーバーでビルドして実行するために使用されました。アプリのクラスがどこにあるかをJunoに伝えるには、Junoをどのように処理する必要がありますか?

4

1 に答える 1

1

Eclipseを介してデプロイする場合は、Eclipseがアプリケーションを正しくデプロイしたかどうかを確認する必要があります。EclipseはWARファイルを使用してデプロイするのではなく、必要なファイルをappserverswebappの場所に直接コピーします。

Eclipseがこれを台無しにすることもありますが、デプロイメント用のWTPの既知のバグがあります。

.metadata / .plugins / org.eclipse.wst.server.core-フォルダーとそのサブフォルダーを確認する必要があります(各サブフォルダーは登録済みのサーバーインスタンスを表します)。

場合によっては、webappsでデプロイメントを完全に消去し、Eclipseで再デプロイする必要があります。それは魔法ですが、機能します。

チェックしてはいけないことの1つ:WARファイル:EclipseはWARファイルからデプロイされません。最初にデプロイされたクラスを確認してください。

そして最後のヒント:Mavenにm2eを使用している場合は、WTPサポート用にm2e-wtpプラグインをインストールする必要があります。

于 2013-02-27T09:53:46.773 に答える