遇到缺少运行时依赖项的错误:java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItem [英] getting error missing a runtime dependency: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItem
问题描述
我正在尝试设置Maven,JSF和Primefaces项目.但是当我运行项目时,出现以下错误
I am trying to setup Maven, JSF and Primefaces project. But when i run the project i get the following error
com.sun.faces.config.ConfigurationException:
Source Document: jar:file:/D:/Personal%20Work/eclipse%2032%20Bit/workspace/Java%20EE
/Spring/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
/ch18_SpringWebFlowAndJSF/WEB-INF/lib/primefaces-3.5.jar!/META-INF/faces-config.xml
Cause: Class 'org.primefaces.component.fileupload.FileUploadRenderer' is missing
a runtime dependency: java.lang.NoClassDefFoundError: org/apache/commons/fileupload
/FileItem
这是我的POM代码段
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.2.3.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.7.5</org.slf4j-version>
<jsf-version>2.2.0</jsf-version>
</properties>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-faces</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsf-version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>${jsf-version}</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.5</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
为什么我会收到此错误?
Why i am getting this error?
谢谢
推荐答案
java 文档说
NoClassDefFoundError如果Java虚拟机或 ClassLoader实例尝试加载类的定义(如 普通方法调用的一部分或创建新实例的一部分 使用新的表达式),则无法定义该类 找到了.
NoClassDefFoundError Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.
搜索的类定义在当前执行时存在 类已编译,但无法再找到该定义.
The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.
org.apache.commons.fileupload.FileItem 是Apache Commons的 FileUpload 组件中的类,您的类路径中缺少该类.在pom.xml中为 FileUpload 组件添加以下Maven依赖项.
org.apache.commons.fileupload.FileItem is a class in FileUpload component of Apache Commons which is missing in your class path. Add following maven dependency for FileUpload component in your pom.xml.
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>x.x</version>
</dependency>