Java上传文件错误java.lang.NoSuchMethodException的解决办法

错误详情:

java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>()
  at java.lang.Class.getConstructor0(Unknown Source)
  at java.lang.Class.getDeclaredConstructor(Unknown Source)
  at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
  at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:137)
  at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:80)

解决办法:在方法里加上参数注解 @RequestParam

这个错误是在使用wangEditor配置多文件上传的时候出现的,使用单个文件上传没有这个问题。

直接使用多文件上传一直报错,就用了单文件循环。

代码如下:

@RequestMapping(value="uploadFilesForWEditor",method={RequestMethod.GET,RequestMethod.POST})
  @ResponseBody
  public static Map<String,Object> uploadFilesForWEditor(@RequestParam("files")MultipartFile[] files,HttpServletRequest request,HttpServletResponse response){
    Map<String,Object> map=new HashMap<>();
    List<String> url = new ArrayList<>();
    for (int i = 0; i < files.length; i++) {
      String result=FileUploadUtils.fileUpload(files[i], request, response);
      if(result!=""){
        url.add(result);
      }
    }
    if(url.size()>0){
      map.put("errno",0);
      map.put("msg","上传成功");
      map.put("data",url);
    }else{
      map.put("errno",1);
      map.put("msg","上传失败");
      map.put("data",url);
    }
    return map;
  }

FileUploadUtils:

public static String fileUpload(MultipartFile file,HttpServletRequest request,HttpServletResponse response){
    //获取图片的原名字
    String oldName=file.getOriginalFilename();
    String timeName=System.currentTimeMillis()+"_";
    String newName=timeName+oldName;
    //获取项目的路径 在项目路径下新建文件夹
    String path= "D:/uploadFile";
    //新建 uploadFile 文件夹
    File parentPath=new File(path);
    if(!parentPath.exists()){
      parentPath.mkdirs();
    }
    String src="";
    try {
      file.transferTo(new File(parentPath,newName));
      File theFile=new File(parentPath+"/"+newName);
      if(theFile.exists()){
        //拼接图片的相对路径作为URL
        src="/"+newName;
      }else{
        src="";
      }
    } catch (IllegalStateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return src;
  }

记录错误。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Java程序员容易犯的10大低级错误

    本文根据java开发人员在编码过程中容易忽视或经常出错的地方进行了整理,总结了十个比较常见的低级错误点,方便大家学习. 1.不能用"=="比较两个字符串内容相等. 2. 对list做foreach循环时,循环代码中不能修改list的结构. 3. 日志和实际情况不一致;捕获异常后没有在日志中记录异常栈. 4. 魔鬼数字. 5. 空指针异常. 6. 数组下标越界. 7. 将字符串转换为数字时没有捕获NumberFormatException异常. 8. 对文件.IO.数据库等资源进行操作后

  • java.lang.NoClassDefFoundError错误解决办法

    java.lang.NoClassDefFoundError错误解决办法 前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往往花费时间去不断尝试一些其他的方法去解决这

  • Java Base64解码错误及解决方法

    问题提出: 自己在做一个小网站充当练手,但是前端图片经过base64加密后传往后端在解码.但是一直都有问题,请大神赐教 public static String base64ToImg(String src) throws IOException { String uuid = UUID.randomUUID().toString(); StringBuilder newPath = new StringBuilder(IMG_ROOT_PATH); newPath.append(separat

  • 解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)

    解决java编译错误( 程序包javax.servlet不存在javax.servlet.*) 编译:javac Servlet.java 出现 软件包 javax.servlet 不存在 软件包javax.servlet.http 不存在 等错误 由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决"软件包 javax.servlet不存在"错误的方法: 1. 搜索servle

  • 解决 java.lang.NoSuchMethodError的错误

    解决 java.lang.NoSuchMethodError的错误 1 原因 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误.本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类.说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本: 开发环境和运行环境不一致. 2 解决方法 查看"External Libraries",看报错的方法到底存

  • Maven在Java8下如何忽略Javadoc的编译错误详解

    JavaDoc简介And基础知识 (一) Java注释类型 //用于单行注释. /*...*/用于多行注释,从/*开始,到*/结束,不能嵌套. /**...*/则是为支持jdk工具javadoc.exe而特有的注释语句. 说明:javadoc 工具能从java源文件中读取第三种注释,并能识别注释中用@标识的一些特殊变量(见表),制作成Html格式的类说明文档.javadoc不但能对一个 java源文件生成注释文档,而且能对目录和包生成交叉链接的html格式的类说明文档,十分方便. (二)Java

  • Android 出现:java.lang.NoClassDefFoundError...错误解决办法

    今天测试突然给我说我写的XX界面一点app就crash了! 纳尼,我肯定表示不服啊!怎么可能出现一点击就崩溃的情况呢,明明自己的测试了的! 然后我又用自己的测试机试了下没问题(Version:5.0.2),然后又使用crash的测试手机(Version:4.4),乖乖,居然是4.4才会出现的情况!(4.4以下没有验证哈!可能都会吧!!!) log显示: W/System.err: java.lang.NoClassDefFoundError: android/os/PersistableBund

  • IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

    引入第三方jar包或者查看Java源码的时候,经常遇到问题如下: decompiled.class file bytecode version:52.0(java 8) ,open source file. 翻译一下上面的意思:(反编译 .class文件中的字节码 到Java 8 版本) 打开源文件 其实这个时候,你就得注意一下,你看到文件是 .class文件,还是 .java文件. 然后我就详细的总结了一下,二者的差别: 1.先是理论知识: .java为Java的源文件后缀,编写的代码需要写在

  • Java java.lang.ExceptionInInitializerError 错误如何解决

     Java java.lang.ExceptionInInitializerError 错误如何解决 引起 Java.lang.ExceptionInInitializerError 错误的原因是:在类的初始化时,出错.也就是说,在加载类时,执行static的属性.方法块时,出错了. 比如 public class AA { private static AA aa = new AA(); private AA(){//构造方法 init(); } public void init(){ ...

  • java.lang.UnsatisfiedLinkError: %1 不是有效的Win32应用程序错误解决

    发现问题 最近工作中利用JNA 调用 dll 库时保错,错误如下: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始化,设置等等 */ public interface ID_FprCap extends StdCallLibrary { ID_Fpr fpr = ID_Fpr.INSTANCE ; ID_FprCap fprCap = (ID_FprCap)Native.load

随机推荐