2014-10-27 111 views
2

我一直在找到添加primefaces引用到我的web应用程序项目的困难。我已经添加了在我的项目中运行primefaces所需的所有必需的引用。但我不知道哪个参考仍在等待。请大家指点。在Maven项目中添加Primefaces参考?

下面是我的pom.xml内容

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>myprojectweb</artifactId> 
    <packaging>war</packaging> 
    <name>myproject Web Project</name> 
    <parent> 
     <groupId>com.myproject</groupId> 
     <artifactId>myproject</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <relativePath>../myproject</relativePath> 
    </parent> 

    <repositories> 
     <repository> 
      <id>prime-repo</id> 
      <name>Prime Repo</name> 
      <url>http://repository.primefaces.org</url> 
     </repository> 
    </repositories>   

    <dependencies> 
     <dependency> 
      <groupId>asm</groupId> 
      <artifactId>asm-commons</artifactId> 
      <version>3.3</version> 
     </dependency>   
     <dependency> 
      <groupId>com.sun</groupId> 
      <artifactId>tools</artifactId> 
      <version>1.6.0</version> 
      <scope>system</scope> 
      <systemPath>C:\Program Files\Java\jdk1.6.0_34\lib\tools.jar</systemPath> 
     </dependency> 
     <dependency> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
      <version>2.7.2</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>5.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.easymock</groupId> 
      <artifactId>easymock</artifactId> 
      <version>2.4</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8.8</version> 
     </dependency> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-all</artifactId> 
      <version>1.9.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <version>2.3.16.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.0.6</version> 
     </dependency> 
     <dependency> 
      <groupId>opensymphony</groupId> 
      <artifactId>xwork</artifactId> 
      <version>2.0.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts.xwork</groupId> 
      <artifactId>xwork-core</artifactId> 
      <version>2.3.16.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-convention-plugin</artifactId> 
      <version>2.3.16.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts-taglib</artifactId> 
      <version>1.3.10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20140107</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian</groupId> 
      <artifactId>arquillian-bom</artifactId> 
      <version>1.1.4.Final</version> 
      <type>pom</type> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.protocol</groupId> 
      <artifactId>arquillian-protocol-servlet</artifactId> 
      <version>1.1.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.junit</groupId> 
      <artifactId>arquillian-junit-container</artifactId> 
      <version>1.1.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.container</groupId> 
      <artifactId>arquillian-wlp-managed-8.5</artifactId> 
      <version>1.0.0.Beta1</version> 
     </dependency>           
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.1</version> 
     </dependency>  
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.1.3</version> 
     </dependency>  
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.0.2</version> 
     </dependency>  
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency>  
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope>      
     </dependency> 
     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myprojectcommon</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myprojectejb</artifactId> 
      <version>${project.version}</version> 
      <type>ejb</type> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${compiler-plugin-version}</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <!-- <compilerArguments> 
          <endorseddirs>${endorsed.dir}</endorseddirs> 
        </compilerArguments> --> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>${war-plugin-version}</version> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
        <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib/</classpathPrefix> 
         </manifest> 
        </archive> 
        <webResources> 
         <resource> 
          <filtering>true</filtering> 
          <directory>src/main/webapp</directory> 
          <includes> 
           <include>**/web.xml</include> 
          </includes> 
         </resource> 
        </webResources> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <properties> 
     <compiler-plugin-version>2.5.1</compiler-plugin-version> 
     <war-plugin-version>2.4</war-plugin-version> 
    </properties> 
</project>t> 

,我发现下面的错误,当我运行我的应用程序:

[27/10/14 15:02:51:841 IST] 00000131 webapp  E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[Faces Servlet]: java.lang.NoClassDefFoundError: org.primefaces.event.NodeSelectEvent 
      at java.lang.Class.getDeclaredMethodsImpl(Native Method) 
      at java.lang.Class.getDeclaredMethods(Class.java:748) 
      at java.beans.StandardBeanInfo.introspectMethods(StandardBeanInfo.java:665) 
      at java.beans.StandardBeanInfo.introspectMethods(StandardBeanInfo.java:652) 
      at java.beans.StandardBeanInfo.<init>(StandardBeanInfo.java:153) 
      at java.beans.Introspector.getBeanInfoImpl(Introspector.java:272) 
      at java.beans.Introspector.getBeanInfoImplAndInit(Introspector.java:389) 
      at java.beans.Introspector.getBeanInfo(Introspector.java:171) 
      at javax.el.BeanELResolver$BeanProperties.<init>(BeanELResolver.java:218) 
      at javax.el.BeanELResolver.property(BeanELResolver.java:315) 
      at javax.el.BeanELResolver.getValue(BeanELResolver.java:89) 
      at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:55) 
      at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142) 
      at org.apache.el.parser.AstValue.getValue(AstValue.java:174) 
      at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:283) 
      at org.apache.myfaces.view.facelets.el.ELText$ELTextVariable.toString(ELText.java:202) 
      at org.apache.myfaces.view.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:51) 
      at org.apache.myfaces.view.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:46) 
      at org.apache.myfaces.view.facelets.compiler.UILeaf.encodeAll(UILeaf.java:214) 
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) 
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) 
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) 
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) 
      at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1320) 
      at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) 
      at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) 
      at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240) 
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1227) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:776) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458) 
      at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) 
      at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:909) 
      at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) 
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) 
      at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88) 
      at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 
      at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
      at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
      at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
      at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
      at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
      at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862) 
Caused by: java.lang.ClassNotFoundException: org.primefaces.event.NodeSelectEvent 
      at java.net.URLClassLoader.findClass(URLClassLoader.java:434) 
      at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204) 
      at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:667) 
      at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:650) 
      at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62) 
      at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58) 
      at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:584) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:650) 
      at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:584) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:650) 

任何指导,将不胜感激。

+1

似乎您必须将异常堆栈跟踪(可在您的控制台中使用,而不是在浏览器中)添加到ma任何人都可以检查问题的确切原因。 – zaerymoghaddam 2014-10-27 10:25:13

+3

看看你的WAR插件配置,看起来你正在设置它来排除WEB-INF/lib中的所有jar文件......因此,在部署时,primefaces会自发丢失,这并不奇怪。您可能会放置该配置,因为依赖关系列表非常糟糕 - 其中存在许多重复项以及许多API依赖项(faces,servlet,JSP),它们绝不能与应用程序一起部署。 – Gimby 2014-10-27 10:29:02

+0

@Gimby我刚刚阅读[here](http://javing.blogspot.fr/2013/01/how-to-create-new-jsf-21-project-and.html),当在JBoss上部署时,面和servlet依赖关系是必需的。怎么可能? – GameDroids 2014-10-27 10:32:59

回答

4

如您的堆栈跟踪显示,org.primefaces.event.NodeSelectEvent类不存在于您的运行时类路径中,并且如果您看一下您的pom.xml(如@Gimby的注释中所提到的),您明确要求maven不要包含在你的最终包装的战争文件的库文件夹:

<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>

我想去除“Maven的战争插件”上面的配置将解决您的问题(或者至少让你去下一个错误;)

+0

非常感谢!它的工作... :) – 2014-10-27 11:34:33

+0

从我身边+1 ...解决了我的primefaces异常以及.. :-) – sTg 2014-10-27 11:42:24