切换到Eclipse Juno并找不到Filter类

时间:2013-02-24 07:49:23

标签: java eclipse classpath web.xml eclipse-juno

我正在尝试在Springsource Tool Suite(基于Eclipse Juno)的服务器中运行一个项目。它曾经在早期版本的Eclipse中运行。这是一个maven项目,它可以从命令行构建。

我现在看到的问题是它找不到web.xml中引用的过滤器类,尽管在之前的Eclipse版本中,找到这个类没有问题。 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>

当我尝试在内部Tomcat 6服务器上运行它时,出现以下错误:

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

当我运行jar tf app.war | grep HibernateSessionFilter时,战争文件中有一个类:

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

也许它不属于WEB-INF / classes?

正如我所说,这个应用程序用于在内部服务器上构建和运行。我应该如何处理Juno告诉它应用程序的类在哪里?

1 个答案:

答案 0 :(得分:1)

如果通过Eclipse进行部署,则应检查Eclipse是否正确部署了应用程序 - Eclipse不使用WAR文件进行部署,而是将应用程序的webapp位置复制到必要的文件中。

有时虽然Eclipse会对此感到困惑 - 但已知存在用于部署的WTP错误。

你应该检查一下     .metadata / .plugins / org.eclipse.wst.server.core- 文件夹及其子文件夹(每个子文件夹代表一个已注册的服务器实例)。

有时您需要在webapps中完成擦除部署并在Eclipse中重新部署。这很神奇,但它确实有效。

您不应该检查的一件事:您的WAR文件:Eclipse不从WAR文件部署。请先检查部署的类。

最后一个提示:如果您使用m2e作为Maven,则应安装m2e-wtp插件以支持WTP。