java - 切换到 Eclipse Juno 并找不到 Filter 类

标签 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 该类位于 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/

相关文章:

eclipse - java.lang.ClassNotFoundException : org. eclipse.core.runtime.adaptor.EclipseStarter

java - 具有类路径问题的 grails war 的 Tomcat 部署

Grails: getClass().getResource ("whatever") 不起作用

Java Regex 在定界符和保留定界符之间拆分字符串

java - 无法将字符串转换为 ZonedDateTime : DateTimeParseException

java - 如何订阅 MQTT 主题并在 Eclipse (Java) 上打印收到的消息

java - 使用 Assets 文件夹(本地)进行简单的json解析

java - 如何将本地文件名传递给 ClassPathXmlApplicationContext?

java - 如何遍历复杂的 JSON 并将其放入 Map 中?

java - 我正在尝试调整数组大小,但不断出现索引越界异常