1

我试图让一个项目在 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类时,war 文件中有:

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

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

正如我所说,这个应用程序用于在内部服务器中构建和运行。我需要用 Juno 做什么来告诉它我的应用程序的类在哪里?

4

1 回答 1

1

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

有时虽然 Eclipse 会搞砸这一点 - WTP 的部署存在已知的错误。

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

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

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

最后一个提示:如果你使用 m2e for Maven,你应该安装 m2e-wtp 插件以获得 WTP 支持。

于 2013-02-27T09:53:46.773 回答