简体   繁体   English

java.lang.NoClassDefFoundError:java.lang.Class.getDeclaredConstructors0上的org / apache / commons / fileupload / FileItemFactory(本机方法)

[英]java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory at java.lang.Class.getDeclaredConstructors0(Native Method)

I have to upload a file on a local website, I am using Spring, Hibernate, but I do not use Maven. 我必须在本地网站上传文件,我使用Spring,Hibernate,但我不使用Maven。

I know I have a little problem with my architecture but it works before I try to upload my file. 我知道我的架构有点问题,但在我尝试上传文件之前它有效。

My architecture is like : 我的架构如下:

- src :
  - Controller : With my controller 
  - Dao : With my DAO
  - Model : With my Model
  - Hibernate : With my Hibernate
  - applicationContext.xml : With beans for dao
...
- WebContent :
  - Views : With my jsp
  - WEB-INF : 
     - dispatchers-servlet.xml : With beans for controller and views
     - web.xml : with the servlet and servlet mapping

I tried to add : 我试着添加:

<!-- Configure the multipart resolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="100000"/>
</bean>

I added this in dispatchers-servlet.xml. 我在dispatchers-servlet.xml中添加了这个。 But when I started my server, I had this problem : 但是当我启动服务器时,我遇到了这个问题:

SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:951)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:924)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:484)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:632)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:589)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:646)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:509)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:450)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 34 more

janv. 06, 2016 12:13:11 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /jobEISTI threw load() exception
java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:951)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:924)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:484)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:632)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:589)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:646)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:509)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:450)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

I have added commons-fileupload-1.3.1.jar to my buildpath but still it doesn't work. 我已经将commons-fileupload-1.3.1.jar添加到我的buildpath中,但它仍然不起作用。

Answer : The Apache Commons FileUpload jar must be on the classpath at runtime. :Apache Commons FileUpload jar必须在运行时位于类路径上。 If you are using Gradle or Maven you can add it as a dependency in your project's build.gradle or maven pom file. 如果您使用的是Gradle或Maven,则可以将其作为依赖项添加到项目的build.gradle或maven pom文件中。

Explanation : Apache Commons FileUpload is an optional dependency of Spring Web. 说明 :Apache Commons FileUpload是Spring Web的可选依赖项。 Neither Maven nor Gradle will automatically resolve/download optional dependencies. Maven和Gradle都不会自动解析/下载可选的依赖项。 Optional dependencies have to be manually added to your project's list of dependencies when your project uses a feature that requires them. 当项目使用需要它们的功能时,必须手动将可选依赖项添加到项目的依赖项列表中。

Since my project uses the CommonsMultipartResolver class from Spring Web, we in fact do need Apache Commons FileUpload at runtime. 由于我的项目使用Spring Web的CommonsMultipartResolver类,我们实际上在运行时需要Apache Commons FileUpload。 After adding the following to the dependencies block in my build.gradle file everything worked perfectly: 将以下内容添加到build.gradle文件中的依赖项块之后,一切都运行良好:

runtime 'commons-fileupload:commons-fileupload:1.3.1' runtime'commons-fileupload:commons-fileupload:1.3.1'

It would be nice if there were some way to determine the full set of optional dependencies that a project requires at runtime. 如果有某种方法可以确定项目在运行时需要的完整可选依赖项集,那将会很好。 The only solution I can think of is comprehensive unit test coverage, but that may not be feasible for many projects. 我能想到的唯一解决方案是全面的单元测试覆盖,但对许多项目而言可能并不可行。

If you include in lib folder and problem still persists, Try to keep 如果您包含在lib文件夹中并且问题仍然存在,请尝试保留

commons-fileupload-1.3.1.jar in tomcat/lib . tomcat/lib commons-fileupload-1.3.1.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory - java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 春季如何解决多部分分解器? java.lang.NoClassDefFoundError:org / apache / commons / fileupload / FileItemFactory - How to solve multipart resolver in spring?? java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory - java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory java.lang.NoClassDefFoundError:org / apache / commons / lang / text / StrLookup - java.lang.NoClassDefFoundError: org/apache/commons/lang/text/StrLookup java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder - java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder java.lang.NoClassDefFoundError:org.apache.commons.lang3.ArrayUtils - java.lang.NoClassDefFoundError: org.apache.commons.lang3.ArrayUtils 是mocking的Logger class方法解决这个错误org/apache/commons/logging/LogFactory java.lang.NoClassDefFoundError吗? - Is mocking of Logger class method solution of this error org/apache/commons/logging/LogFactory java.lang.NoClassDefFoundError? java.lang.NoClassDefFoundError:org / apache / commons / lang / Validate - java.lang.NoClassDefFoundError: org/apache/commons/lang/Validate java.lang.NoClassDefFoundError:org / apache / commons / lang3 / ObjectUtils - java.lang.NoClassDefFoundError: org/apache/commons/lang3/ObjectUtils java.lang.NoClassDefFoundError:org / apache / commons / vfs / FileSelector - java.lang.NoClassDefFoundError: org/apache/commons/vfs/FileSelector
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM