急: 错误是 NoSuchMethodError: org.apache.struts.config.ForwardConfig.getContextRelative()

smartapp 2009-02-13 03:44:27
运行的时候出现页面直接出现error500, NoSuchMethodError: org.apache.struts.config.ForwardConfig.getContextRelative()错误...

org.apache.struts.config.ForwardConfig.getContextRelative()Z
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:293)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
...全文
220 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁匠梁 2009-02-16
  • 打赏
  • 举报
回复
之前遇到过,两个版本的Struts包实现有点不一样,把老版本屏蔽掉OK
smartapp 2009-02-16
  • 打赏
  • 举报
回复
今天来上班了,我马上试一试楼上兄弟的意见.太感谢了.
Johnson_Hong 2009-02-13
  • 打赏
  • 举报
回复
去掉一个包难道不行吗?
smartapp 2009-02-13
  • 打赏
  • 举报
回复
但是包以前从来没有动过,一直都没有动包.以前的代码运行都很好.加上一个report之后,就出现.而且在我的local server is working. but
in another server is not working. I don't know how to fix it?
Johnson_Hong 2009-02-13
  • 打赏
  • 举报
回复
把struts1.3.8从构建路径移除,然后重新部署试验一下
Johnson_Hong 2009-02-13
  • 打赏
  • 举报
回复
你的2个包版本不同,都存在于系统中,那么加载类的时候就不确定了
出现这个问题应该是
加载类的时候org.apache.struts.action.RequestProcessor加载的是1.2.9的
org.apache.struts.config.ForwardConfig是1.3.8的
----
你的编译器的builtpath中包的顺序不一样,就有可能导致加载的方式也不一样,有可能2个包的位置调换一下,就不报错了,
为了避免这种不确定性,需要消除项目中有冲突的包
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
代码贴一下
smartapp 2009-02-13
  • 打赏
  • 举报
回复
就是突然出现这个错误.找到为什么出现这个错误,并解决它.
Johnson_Hong 2009-02-13
  • 打赏
  • 举报
回复
你的程序代码里应该不会直接调用这个struts底层的方法
之所以这里会报错,应该是你放了2个不同版本的jar包吧

只留下一个版本的jar应该就可以了
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 siyanfighting 的回复:]
你还是先说说,你要干什么和你已经干了什么吧
[/Quote]

要不然有点乱,
smartapp 2009-02-13
  • 打赏
  • 举报
回复
我把ForwardConfig源码都找出来看了.
Struts 版本:1.3.8 api
http://struts.apache.org/1.3.8/apidocs/index.html

struts 版本: 1.2.9 api
http://struts.apache.org/1.2.9/api/index.html
确实是变量.只不过是get set方面而以.不过
这个应该forward这个struts-config.xml有关.
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
contextrelative 怎么会是个变量呢?你理解错了吧,
还是贴代码吧
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
或者加我群 ,Q里说方便点
smartapp 2009-02-13
  • 打赏
  • 举报
回复
改成以前的版本,看来难道有点大.但是以前允许我的项目一直没有问题,最近的一个task完成后,就出现这个错误.不知道哪里出了问题?
感觉和以前的代码都没有什么区别啊.为什么服务器突然调用contextrelative这个变量?而且我的struts-config.xml里面的代码和从前并
没有什么差别.谁能解释ContextRelative和module倒是有什么区别,一般写了什么代码会调用ContextRelative呢?我想改一下代码,又不知道哪里调用了.
现在连以前的代码允许都出现这个错误.
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
你还是先说说,你要干什么和你已经干了什么吧
smartapp 2009-02-13
  • 打赏
  • 举报
回复
兄弟所言极是,我用的是struts-1.3.8.出来错误就立即找了 在struts-core-1.3.8.jar中有此类,但是没有这个方法.原因是这个field在1.3.8被删除了.
而有module.研究了很久,原理是服务器调用了ContextRelative这个变量.而在struts1.3.8中没有.但是我在struts.jar中倒是找到了同样的类,而且包含有
这个方法和变量.我找了所有struts,原来在struts1.2.9以后版本就没有办法这个变量,而被module替代了.
我该如何是好?
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 siyanfighting 的回复:]
ForwardConfig.getContextRelative()

??

你不会是直接用类名调用的吧,getContextRelative()不是表态的方法,
要先实例化对象,通过对象才能调用
[/Quote]

不是 静态方法

打错了
耶律火柴 2009-02-13
  • 打赏
  • 举报
回复
ForwardConfig.getContextRelative()

??

你不会是直接用类名调用的吧,getContextRelative()不是表态的方法,
要先实例化对象,通过对象才能调用
Johnson_Hong 2009-02-13
  • 打赏
  • 举报
回复
在struts.jar包里找一下org.apache.struts.config.ForwardConfig.class
看有没有getContextRelative方法,如果没有就换一个包
如果有这个方法,可能其他的包里面的类和这个有冲突,需要排查
冀章的小目标 2009-02-13
  • 打赏
  • 举报
回复
应该发下源码看看
加载更多回复(3)

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧