Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化bean类[multipart.MultipartFile]:指定的类是org.springframework.beans.BeanUtils.InstanceClass上的接口_Java_Spring_Hibernate_File Upload - Fatal编程技术网

Java 无法实例化bean类[multipart.MultipartFile]:指定的类是org.springframework.beans.BeanUtils.InstanceClass上的接口

Java 无法实例化bean类[multipart.MultipartFile]:指定的类是org.springframework.beans.BeanUtils.InstanceClass上的接口,java,spring,hibernate,file-upload,Java,Spring,Hibernate,File Upload,我想在我的本地网站上传一个文件,我使用Spring和Hibernate(我不使用Maven) 我做了一个表格: <form class="text-center" action="<c:url value="/createRessource.do"/>" enctype="multipart/form-data" method="POST"> <h4 class="bleucolor">Titre de la ressource (20 caractè

我想在我的本地网站上传一个文件,我使用Spring和Hibernate(我不使用Maven)

我做了一个表格:

<form class="text-center" action="<c:url value="/createRessource.do"/>" enctype="multipart/form-data" method="POST">
    <h4 class="bleucolor">Titre de la ressource (20 caractères maximum) : </h4>
    <input class="col-lg-4 text-center col-lg-offset-4" type="text" name="titre" maxlength="20"/> <br> <br> <br>
    <h4 class="bleucolor">Description de la ressource (1024 caractères maximum) : </h4>
    <textarea name="description" rows=10 cols=50 maxlength="1024" ></textarea><br><br><br>
    <h4 class="bleucolor"> Pièce jointe :</h4>
    <input class="col-lg-4 text-center col-lg-offset-4" type="file" name="file" /><br><br><br>
    <h4 class="bleucolor"> Tags de la ressource : </h4>
    <c:forEach var="model" items="${sessionScope.tags}">
        <input type="checkbox" name="tagsRessource" value="${model.getIdtag()}" id="${model.getIdtag()}"/>
        <label class="font18" for="${model.getIdtag()}">&thinsp;${model.getLibelle()}&thinsp;</label>
    </c:forEach><br><br><br>
    <input class="text-center avioletbackground rosebtn btn btn-success btn-lg" type="submit"/>
</form>
我的函数“ajuterresource”将ressource添加到数据库中。 一开始,我不知道Java中是否存在MyltipartFile类型。它可以工作,但我无法找到我上传的文件的名称和内容类型,并将其保存在数据库中

现在,当我提交表格时,我有一个错误:

janv. 06, 2016 7:08:41 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatchers] in context with path [/jobEISTI] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.newCommandObject(MultiActionController.java:520)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:466)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
我的/WEB-INF/lib中没有“jspapi-*.jar”。 我想它来自多部分文件,但我不知道我该怎么做。拜托,你能帮我吗


非常感谢您

您为什么要使用过时的
多动作控制器
?使用带注释的
@Controller
类型。“我不使用Maven”-这是根本原因。请不要告诉我你实际上是在写这样的代码?永远不要创建应用程序上下文的实例来检索bean(除非您希望遇到内存不足问题、奇怪的事务问题、数据库不足等)。使用依赖注入获得所需的服务。你似乎也混合了不同的策略(
@Controller
根据注释判断)和旧的
多动作控制器
@SotiriosDelimanolis,当我开始这个项目时,我认为它很好,但似乎不是,对于我未来的项目,我将从一开始就使用[tag:@Controller]注释。对于M.Deinum,我实际上是在写这样的代码,我在项目开始时做了一个很大的误解,这是JEE中我必须做的第一个项目,对于我的下一个项目,我将应用你所有的建议:只使用注释,使用Maven,忘记MultiActionController。我将尝试更新我的控制器(删除MultiActionController并使用注释,我希望不会太晚谢谢你的回答为什么你使用过时的
MultiActionController
?使用
@Controller
注释类型。“我不使用Maven”-这是根本原因。请不要告诉我您实际上正在编写这样的代码?永远不要创建应用程序上下文的实例来检索bean(除非您希望遇到内存不足问题、奇怪的事务问题、数据库不足等)。使用依赖注入来获得所需的服务。您似乎还混合了不同的策略(
@Controller
根据注释判断)和旧的
MultiActionController
@SotiriosDelimanolis,当我开始这个项目时,我认为它很好,但似乎不是,对于我未来的项目,我将使用[tag:@Controller]从一开始就注释。对于M.Deinum,我实际上是在写这样的代码,我在我的项目开始时做了一个很大的误解,这是JEE中我必须做的第一个项目,对于我的下一个项目,我将应用你所有的建议:仅注释,使用Maven,忘记MultiActionController。我将尝试更新我的控件ller(删除MultiActionController并使用注释,我希望不会太晚,谢谢您的回答
public ModelAndView createRessource(HttpServletRequest request, HttpServletResponse response, @RequestParam(value="file", required=true) MultipartFile file){
    ApplicationContext ctx = new GenericXmlApplicationContext("applicationContext.xml");
    String resultat = null;
    RessourceHome bean = (RessourceHome) ctx.getBean("RessourceHome");
    String titre = request.getParameter("titre");
    String description = request.getParameter("description");
    String fichierUpload = request.getParameter("file");
    String[] tagsRessource = request.getParameterValues("tagsRessource");
    String fichierName = file.getName();
    String fichierType = file.getContentType();

    try {
        byte[] bytes = fichierUpload.getBytes();
        BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("fichier")));
        stream.write(bytes);
        stream.close();            
        resultat = bean.ajouterRessource(titre, description, bytes, tagsRessource, fichierName, fichierType);
    } catch (Exception e) {
        return new ModelAndView("creationRessource");
    }
    if (resultat == null) {
        String erreur = "Création de l'annonce réussie";            
        return new ModelAndView("creationRessource", "erreur", erreur);
    } else {        
        return new ModelAndView("creationRessource", "erreur", resultat);
    }       
}
janv. 06, 2016 7:08:41 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatchers] in context with path [/jobEISTI] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.newCommandObject(MultiActionController.java:520)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:466)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)