Java NoClassDefFoundError:将文件从CommonsMultipartFile映射到字节[]

Java NoClassDefFoundError:将文件从CommonsMultipartFile映射到字节[],java,spring,portlet,dozer,Java,Spring,Portlet,Dozer,我正在尝试使用dozer将CommonsMultipartFile映射到字节[] 我知道我需要一个customConverter,因为dozer对CommonsMultipartFile类型一无所知,所以我做了: public class FileJtfConverter extends DozerConverter<CommonsMultipartFile, byte[]> { /** * Constructor */ public F

我正在尝试使用dozer将CommonsMultipartFile映射到字节[]

我知道我需要一个customConverter,因为dozer对CommonsMultipartFile类型一无所知,所以我做了:

    public class FileJtfConverter extends DozerConverter<CommonsMultipartFile, byte[]> {

    /**
     * Constructor
     */
    public FileJtfConverter() {
        super(CommonsMultipartFile.class, byte[].class);
    }

    @Override
    public final byte[] convertTo(CommonsMultipartFile a, byte[] b) {
        if (a != null) {
            return a.getBytes();
        }
        return null;
    }

    @Override
    public final CommonsMultipartFile convertFrom(byte[] b, CommonsMultipartFile a) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    }
看起来一切正常,但它引发了一个例外: org.dozer.MappingException:java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileUploadException

这很奇怪,因为我在pom.xml文件中定义了依赖项

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>                
    </dependency>   

文件上传
文件上传
公地io
公地io

有什么想法吗。。?非常感谢

如果您使用的是Spring MVC,您可以在方法中注册一个
CustomEditor
,该方法用
@InitBinder
注释

已经有一个可以为您从
多部分文件
自动转换为
字节[]

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}
您的域对象/窗体可以直接保存
byte[]
而不是
MultipartFile


我相信您也可以对SpringPortlet MVC做同样的事情。

如果您使用的是SpringMVC,您可以在您的方法中注册一个
CustomEditor
,并用
@InitBinder
注释

已经有一个可以为您从
多部分文件
自动转换为
字节[]

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}
您的域对象/窗体可以直接保存
byte[]
而不是
MultipartFile


我相信您也可以对SpringPortlet MVC执行同样的操作。

将commons文件上载到类路径。将commons文件上载到类路径。听起来不错,但我使用的是commons多部分文件,而不是多部分文件。CommonsMultipartFile有类似的功能吗?
CommonsMultipartFile
implements
MultipartFile
。试试看,可能有用。我试过这种方法,但不起作用。如果我使用这个initBinder,我应该将ClassA参数从private commons multipartfile anexo更改为private byte[]anexo,不是吗?这不完全是我想要做的,但它可以工作…是的,你可以摆脱推土机和任何其他转换逻辑,你可能已经写了具体到这个。好的,它工作。这并不完全是我想要的,我不得不改变一些东西,但最终它起了作用。谢谢!听起来不错,但我使用的是CommonMultipartFile,而不是MultipartFile。CommonsMultipartFile有类似的功能吗?
CommonsMultipartFile
implements
MultipartFile
。试试看,可能有用。我试过这种方法,但不起作用。如果我使用这个initBinder,我应该将ClassA参数从private commons multipartfile anexo更改为private byte[]anexo,不是吗?这不完全是我想要做的,但它可以工作…是的,你可以摆脱推土机和任何其他转换逻辑,你可能已经写了具体到这个。好的,它工作。这并不完全是我想要的,我不得不改变一些东西,但最终它起了作用。谢谢!
@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}