gpt4 book ai didi

jsf - 将 PrimeFaces 应用程序部署到 GlassFish4 会导致 java.lang.NoClassDefFoundError : org/apache/commons/fileupload/FileItem

转载 作者:行者123 更新时间:2023-12-02 02:54:55 25 4
gpt4 key购买 nike

我想使用<p:calendar>在我用 Netbeans 开发的 JSF 应用程序中,所以我添加了 PrimeFaces 库。但是,当我部署该应用程序时,出现以下错误:

Context with name [/ManagedBeansWithComponents] has not yet been started
C:\Users\Dell-pc\Documents\NetBeansProjects\ManagedBeansWithComponents\nbproject\build- impl.xml:1040: The module has not been deployed.
See the server log for details.
BUILD FAILED (total time: 1 second)

服务器日志显示:

Source Document: jar:file:/C:/Users/Dell-pc/Documents/NetBeansProjects/ManagedBeansWithComponents/build/web/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

这是怎么造成的,如何解决?

最佳答案

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

这是有原因的。非常清晰。运行时类路径中缺少提到的类。解决方案相当简单:将提到的类(或包含它的 JAR 文件)放入运行时类路径中。正如包名称所暗示的那样,它可以在 http://commons.apache.org/fileupload 上找到。 (顺便说一句,它又具有 http://commons.apache.org/io 作为依赖项)。只需下载这些 JAR 并将其放在与 PrimeFaces JAR 相同的位置即可,一切都会顺利。

<小时/>

与具体问题无关,请注意,这个特定问题并不是 PrimeFaces 有意为之的。这个问题实际上应该只在您注册 FileUploadFilter 时发生。对于<p:fileUpload> web.xml 中的组件。然而,从 GlassFish 4.0 开始,它会过度地预加载在类路径中找到的每个 JSF 组件和渲染器类,即使应用程序从未使用过它们。类加载反过来会导致检查其所有运行时依赖项。如果丢失,那么您会得到 NoClassDefFoundError 。因此,此问题是 GlassFish 4.0 特有的,在使用 GlassFish 3.x 或任何其他 servlet 容器(例如 Tomcat 或 JBoss)时不会出现。

关于jsf - 将 PrimeFaces 应用程序部署到 GlassFish4 会导致 java.lang.NoClassDefFoundError : org/apache/commons/fileupload/FileItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18612610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com