我正在尝试在 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 做什么才能告诉它我的应用程序的类在哪里?
最佳答案
如果您通过 Eclipse 进行部署,则应检查 Eclipse 是否正确部署了您的应用程序 - Eclipse 不使用 WAR 文件进行部署,而是将必要的文件直接复制到应用程序服务器 webapp 位置。
尽管 Eclipse 有时会搞砸这一点 - WTP 的部署存在已知的错误。
您应该检查 .metadata/.plugins/org.eclipse.wst.server.core- 文件夹及其子文件夹(每个子文件夹代表一个已注册的服务器实例)。
有时您需要完全删除 Web 应用程序中的部署并在 Eclipse 中重新部署。这很神奇,但很有效。
您不应该检查的一件事:您的 WAR 文件:Eclipse 不会从 WAR 文件进行部署。请先检查已部署的类。
最后一个提示:如果您使用 m2e for Maven,则应该安装 m2e-wtp 插件以获得 WTP 支持。
关于java - 切换到 Eclipse Juno 并找不到 Filter 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15049749/