【问题标题】:Struts2 web.xml file filter jar for web application issue用于 Web 应用程序问题的 Struts2 web.xml 文件过滤器 jar
【发布时间】:2013-02-28 00:27:35
【问题描述】:

我目前正在尝试使用 Struts2 框架创建一个小型 Web 应用程序。 (在日食中)

我目前正在尝试在 web.xml(在 WEB-INF 文件夹中)文件中使用过滤器来将控制权转移到 struts.xml 文件(在 src 文件夹中)。 (这是我在教程中看到的)。

我用于过滤器的代码如下:

<filter> 
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

我认为 Tomcat 没有在过滤器的 JAR 文件中找到该类,因为我不断收到以下错误:

java.lang.NoClassDefFoundError: com/opensymphony/xwork2/ActionContext 在 org.apache.struts2.dispatcher.ng.InitOperations.cleanup(InitOperations.java:114) 在 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:60)
...持续了很长一段时间。

我从 Struts 网页下载了 Jar 文件,我设置构建路径的方式如下:

我右键单击项目并转到属性

转到 Java 构建路径部分并创建了一个新库

将所有 Jar 文件添加到该库并将其分配到此 Web 应用程序的构建路径

然后我将此 Jar 库添加到部署程序集,以便在运行时将其部署到 WEB-INF/lib 文件夹。

据我所知,这应该有效,因为它在我遵循的教程中有效!但是,它对我不起作用。

当我运行我的项目并通过我的 PC 导航到保存项目的位置时,如果我查看 WEB-INF/lib 文件夹,那里没有任何 Jar 文件,这可能是问题所在吗?或者这是正常的吗?

感谢您的帮助,非常感谢!

编辑

这是我正在使用的 jar 文件:

commons-fileupload-1.2.2
commons-io-2.0.1
commons-logging-1.1.1
commons-logging-api-1.1
freemarker-2.3.19
javaassist-3.11.0.GA
ognl-3.0.6
struts2-core-2.3.8
xwork-core-2.3.8
commons-lang-2.4

已解决 - 通过在全新构建上完全重新启动项目来解决! 更新 - 还通过删除所有 jar 并重新创建 jar 库并将其重新分配给构建路径/部署程序集来修复旧构建(尽管在尝试调试时这样做了数百次)

然后移除旧的 Tomcat 服务器并分配一个新的。

不完全确定是什么修复了它,但现在一切正常

【问题讨论】:

  • 检查你的 eclipse 战争包装。可能编译的时候有依赖jar,但是没有打包到最终的war中
  • 请显示完整的 jar 列表。
  • @Dave 我尝试添加 Struts2 下载附带的每个 jar,大约有 80 个!
  • 好吧,你不应该那样做,因为插件可以改变 struts 的工作方式。无论如何,听起来您要么混合版本,要么缺少传递依赖。为了进一步提供帮助,您需要列出您正在部署的 jar。考虑只部署你需要的 jars。
  • @Dave 好的,我只包含了教程建议的罐子,并且适用于那个,但惊喜对我不起作用!这是列表,但只是以防万一:commons-fileupload-1.2.2 commons-io-2.0.1 commons-logging-1.1.1 commons-logging-api-1.1 freemarker-2.3.19 javaassist-3.11。 0.GA ognl-3.0.6 struts2-core-1.3.10 xwork-core-2.3.8 commons-lang-2.4

标签: java xml web-applications struts2


【解决方案1】:

如果您打开 Markers 视图,应该有一个 Classpath Dependency 验证器消息警告组。如果您扩展该组,您应该 看到一些类似的警告:

类路径条目 ???不会被导出或发布可能会导致 RuntimeClassNotFoundExceptions。

右键单击这些警告 并选择快速修复。这使您可以 标记类路径条目以包含在 WEB-INF/lib 中。

【讨论】:

  • 我并没有设法以这种方式修复它,但是我的每个 jar 文件都有一个标记,表示它不会被导出或发布,并且可能导致运行时找不到类异常.我对快速修复的唯一选择是要么;排除关联的原始类路径条目,或将关联的类路径条目标记为发布/导出依赖项——这两者似乎都没有区别!
  • 手动修改 .classpath 文件,通过复制和粘贴控制它的添加属性可能会快一点,但总体上可能不会好多少。
猜你喜欢
  • 2012-11-30
  • 2015-07-24
  • 2012-11-10
  • 2015-07-17
  • 2011-11-25
  • 2023-03-20
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多