2017-02-15 4 views
1

でCommonsMultipartResolverを設定するには:失敗は、私は次のようにapplicationContext.xmlを中CommonsMultipartResolverを設定Spring4

<bean id="multipartResolver" 
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
</bean> 

が、それは次のように例外をスロー:

15-Feb-2017 22:17:35.049 INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
15-Feb-2017 22:17:35.107 INFO [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started 
15-Feb-2017 22:17:35.172 INFO [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh Refreshing Root WebApplicationContext: startup date [Wed Feb 15 22:17:35 CST 2017]; root of context hierarchy 
15-Feb-2017 22:17:35.240 INFO [RMI TCP Connection(2)-127.0.0.1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] 
15-Feb-2017 22:17:35.563 WARNING [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.refresh Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multipartResolver' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.multipart.commons.CommonsMultipartResolver]: No default constructor found; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 
15-Feb-2017 22:17:35.575 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multipartResolver' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.multipart.commons.CommonsMultipartResolver]: No default constructor found; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    ... 

CommonsMultipartResolverがために失敗した理由を私は知られていませんインスタンス化されます。 CommonsMultipartResolverはspring-web-4.3.6.RELEASE.jarで見つけることができます。 しかし、この例外がスローされます?

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 

(私はのIntelliJ IDEAを使用しています)私の設定が間違って何

UPDATE
これは

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <bean id="multipartResolver" 
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    </bean> 
</beans> 
私のapplicationContext.xmlをあります

IDEAのプロジェクト設定に「commons-fileupload」を追加して問題を解決しようとしました - > liブラジャー。しかし、それでも問題は解決しない。
project structure setting of IDEA

project structure setting of IDEA

+0

完全なapplicationContext.xmlを表示し、可能であれば、 'FileItemFactory'を参照するJavaコードの一部を表示してください。 – VHS

+0

OK、私はそれをUPDATEに追加するだけです。私のjavaコードは決して 'FileItemFactory'を参照しません。CommonsMultipartResolver'は –

答えて

1

commons-fileuploadをダウンロードして、コンテナのあなたのモジュールフォルダに保管してください。明らかに、クラスorg.springframework.web.multipart.commons.CommonsMultipartResolverは、上記のジャーに含まれるクラスであるorg.apache.commons.fileupload.FileItemFactoryに固執します。コンテナクラスローダーがこのクラスをロードすると、このエラーは発生しません。

+0

を参照するかもしれません。** UPDATE **で説明したようにプロジェクトライブラリにIDEAプロジェクトを追加しようとしましたが、うまくいきません。私は本当に混乱しています。 –

+0

ああ、それは私のせいです。私はちょうどその問題を発見した。 jar 'org.apache.commons.fileupload.FileItemFactory'をアーティファクト(.war)に追加するのを忘れました。 'project structrue' - >' project settings' - > 'artifacts' - >' output layout'を設定して追加します。 –

関連する問題