我正在尝试在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告诉它应用程序的类在哪里?
答案 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。