Glassfish - java.lang.NoClassDefFoundError: org/primefaces/model/UploadedFile

Glassfish - java.lang.NoClassDefFoundError: org/primefaces/model/UploadedFile

我有一个基于 Maven 的项目。这是项目在 eclipse 中的样子:

所以我有单独的前端和后端打包成一个 EAR。该应用程序部署在 Weblogic 12c server,但现在我必须将其移动到 Glassfish。我可以部署到 Glassfish,我的应用程序是 运行。但是,当我调用一个使用 Primefaces UploadFile class 的方法时,我收到了一条错误消息。这是错误消息:

java.lang.NoClassDefFoundError: org/primefaces/model/UploadedFile
javax.ejb.EJBException: java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.NoClassDefFoundError: org/primefaces/model/UploadedFile

这两个依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>6.0</version>
</dependency>

都在 POM.xml(前端和后端)中,并且 Maven 依赖项在我的 class 路径中,如您在这张图片中所见:

我的问题是,我应该将 Primefaces jar 放在哪里,以便 Glassfish 在运行时可见?

您需要将依赖项添加到 Glassfish 的 /lib 文件夹,因为容器将在此处检查它们 将它们与可部署工件捆绑在一起 - 在您的例子中是 .ear 文件。当您使用 Maven 时,有几个可用的插件可以帮助您,例如Maven Assembly 或 Maven Ear 插件。

-根据我上面的评论回答。