/**
 * 
 */
package tongji.sse.zxd.service.upload;import java.io.File;import javax.servlet.ServletContext;import org.apache.commons.io.FileUtils;
import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;public class StrutsFileUpload extends ActionSupport implements
        ServletContextAware {    private File upload;// 实际上传文件    private String uploadContentType; // 文件的内容类型    private String uploadFileName; // 上传文件名    private String fileCaption;// 上传文件时的备注    private ServletContext context;    public String execute() throws Exception {        try {
            
            String targetDirectory = context.getRealPath("/upload");
            String targetFileName = uploadFileName;
            File target = new File(targetDirectory, targetFileName);
            FileUtils.copyFile(upload, target);            
            
            setUploadFileName(target.getPath());//保存文件的存放路径
        } catch (Exception e) {            addActionError(e.getMessage());            return INPUT;
        }        return SUCCESS;    }    public String getFileCaption() {
        return fileCaption;
    }    public void setFileCaption(String fileCaption) {
        this.fileCaption = fileCaption;
    }    public File getUpload() {
        return upload;
    }    public void setUpload(File upload) {
        this.upload = upload;
    }    public String getUploadContentType() {
        return uploadContentType;
    }    public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }    public String getUploadFileName() {
        return uploadFileName;
    }    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }    public void setServletContext(ServletContext context) {
        this.context = context;
    }}Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.il8n.encoding" value="GBK">constant</constant>
<package name="lee" extends="struts-default">
<action name="login" class="loginAction">
<result name="error">/index.jsp</result>
<result name="success">/index.jsp</result>
</action>
</package> <package name="tongji.sse.zxd.service.upload" namespace="/" extends="struts-default">
<action name="fileUpload" class="FileUploadAction">
<param name="savePath">/upload</param>
<result name="error">/index.jsp</result>
<result name="success">/index.jsp</result>
</action>
<action name="doUpload" class="StrutsFileUpload">
<result name="input">/upload.jsp</result>
<result>/upload_success.jsp</result> </action>
</package></struts>    jsp
<%@ page language="java" contentType="text/html; charset=GB2312"%>   
<%@ taglib prefix="s" uri="/struts-tags" %>   
<html>
    <head>
        <title>文件上传示例</title>
        <link href="<s:url value="/css/main.css"/>" rel="stylesheet"
            type="text/css" />    </head>    <body>        <s:actionerror />
        <s:fielderror />
        <s:form action="doUpload" method="POST" enctype="multipart/form-data">
            <tr>
                <td colspan="2">
                    <h1>
                        文件上传示例
                    </h1>
                </td>
            </tr>            <s:file name="upload" label="上传的文件" />
            <s:textfield name="fileCaption" label="备注" />
            <s:submit value="上   传"/>
        </s:form>
    </body>
</html>为什么老报Unable to instantiate Action, StrutsFileUpload,  defined for 'doUpload' in namespace '/'StrutsFileUpload
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)root causejava.lang.ClassNotFoundException: StrutsFileUpload
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:212)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:132)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)

解决方案 »

  1.   

    有冲突吧  去掉namespace咯
      

  2.   

    是不是jar包冲突了???建议仔细查看一下》。
      

  3.   


    java.lang.ClassNotFoundException: StrutsFileUpload
    看样子是没有加上Jar包楼主自己找找这个类在哪个包里吧
      

  4.   

    Unable to instantiate Action, StrutsFileUpload, defined for 'doUpload' in namespace '/'StrutsFileUpload
    在该namespace下找不到doupload,<package name="upload" extends="struts-default">
    <action name="fileUpload" class="tongji.sse.zxd.service.upload.FileUploadAction">
    <param name="savePath">/upload</param>
    <result name="error">/index.jsp</result>
    <result name="success">/index.jsp</result>
    </action>
    <action name="doUpload" class="tongji.sse.zxd.service.upload.StrutsFileUpload">
    <result name="input">/upload.jsp</result>
    <result>/upload_success.jsp</result></action>
    </package>
      

  5.   

    看样子是少了commons-fileupload-1.2.1.jar 这个jar包吧
      

  6.   

    楼主应该是用的spring.
    class="FileUploadAction" 要不是大小写和你的bean没对应上.就是你的bean路径没写对