java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.mu

本文解决Struts2文件上传遇到的java.lang.RuntimeException异常问题。通过添加commons-io-1.4.jar和commons-fileupload-1.2.1.jar两个JAR文件,实现了文件的正常上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]解决发form表单提交问题

 

在测试Struts2权威指南介绍的struts2文件上传,发现如下异常:

 java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]

...........................

再回去仔细看该章节,发现是自己粗心了,忘记加所需要的两个除struts2外的jar文件.所加jar文件所图所示:

 

 

Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,而struts2的filter拦截了上传文件的动作,拦截器代码是这样写的:

//org.apache.struts2.dispatcher.Dispatcher.java
public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException {
        // don't wrap more than once
        if (request instanceof StrutsRequestWrapper) {
            return request;
        }
        String content_type = request.getContentType();
        if (content_type != null && content_type.indexOf("multipart/form-data") != -1) {
            MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);
            request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));
        } else {
            request = new StrutsRequestWrapper(request);
        }
        return request;
    }

注意MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);这句是上传文件时拦截器实现所需要的,出错的原因是所不到MultiPartRequest.class的实现类.这个类在上传框架jar文件中.这是文件上传fileupload解析器。

因此,如果需要使用Struts2的文件上传功能,则需要在web应用中增加两个JAR文件,即commons-io-1.4.jar和commons-fileupload-1.2.1.jar。将这个包或是包的最新版本放在工程的lib目录下,即解决以上异常问题,成功实现文件的上传.

 

 

解决方法:1去掉页面中form 里的enctype="multipart/form-data" 2:(缺少了必要的jar包)Struts2使用开源项目Apache Jakarta Commons FileUpload和内建的FileUploadInterceptor拦截器实现文件上传,所需的jar包如下:commons-logging-1.1.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.6.jarxwork-2.0.1.jarcommons-io-1.3.1.jarcommons-fileupload-1.2.jar

 

 

 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/lansky07/archive/2008/11/07/3246307.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值