2017-04-19 2 views
0

Avoir un projet Maven JSF existant qui fonctionne correctement depuis des mois, et j'ai besoin d'ajouter de nouvelles dépendances.java.lang.NoClassDefFoundError avec la dépendance Maven

Lorsque j'ajoute une nouvelle dépendance, elle compile correctement, mais génère une erreur NoClassDefFoundError lorsqu'elle tente d'exécuter du code utilisant la nouvelle dépendance. Dans ce cas, la nouvelle dépendance est le SDK PayPal. J'utilise IntelliJ comme IDE et contrôle la compilation/le déploiement du projet.

Des idées que je peux faire pour résoudre ce problème?

POM:

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <timestamp>${maven.build.timestamp}</timestamp> 
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> 
</properties> 

<dependencies> 
    ... (lots of other dependencies here) 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.53.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>htmlunit-driver</artifactId> 
     <version>2.20</version> 
    </dependency> 
    <dependency> 
     <groupId>com.paypal.sdk</groupId> 
     <artifactId>rest-api-sdk</artifactId> 
     <version>LATEST</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>6.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.wildfly.plugins</groupId> 
      <artifactId>wildfly-maven-plugin</artifactId> 
      <version>1.1.0.Alpha9</version> 
     </plugin> 

Java:

package com.inmatic.kico.paypal.business.boundary; 

import com.inmatic.kico.accounts.companies.business.entity.Companies; 
import com.paypal.api.payments.*; 
import com.paypal.base.rest.APIContext; 

import javax.ejb.Stateless; 
import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Logger; 

@Stateless 
public class PayPalFacade implements Serializable { 
    private static Logger LOGGER = Logger.getLogger(PayPalFacade.class.getSimpleName()); 

    private static String PAYPAL_CLIENTID = "..."; 
    private static String PAYPAL_SECRET = "..."; 

    public void doCreditCardPayment(Companies company, int cardType, String cardName, String cardNumber, int cardExpiryMonth, int cardExpiryYear, int cardCVV2, double total, double tax) { 
     String firstName = cardName.indexOf(" ")>-1 ? cardName.substring(0, cardName.indexOf(" ")) : cardName; 
     String lastName = cardName.indexOf(" ")>-1 ? cardName.substring(cardName.indexOf(" ") + 1) : ""; 

     CreditCard creditCard = new CreditCard(); //exception is thrown on this line 
     //creditCard.setBillingAddress(); 
     creditCard.setCvv2(cardCVV2); 
     creditCard.setExpireMonth(cardExpiryMonth); 
     creditCard.setExpireYear(cardExpiryYear); 
     creditCard.setFirstName(firstName); 
     creditCard.setLastName(lastName); 
     creditCard.setNumber(cardNumber); 
     creditCard.setType(cardType==0 ? "visa" : "mastercard"); 
    } 
} 

Stack Trace:

javax.ejb.EJBException: JBAS014580: Unexpected Error 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:187) 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:340) 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:95) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326) 
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448) 
at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326) 
at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185) 
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73) 
at com.inmatic.kico.paypal.business.boundary.PayPalFacade$$$view84.doCreditCardPayment(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:414) 
at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127) 
at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) 
at org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:65) 
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) 
at com.inmatic.kico.paypal.business.boundary.PayPalFacade$Proxy$_$$_Weld$EnterpriseProxy$.doCreditCardPayment(Unknown Source) 
at com.inmatic.kico.accounts.companies.presentation.CompanySubscribe_View.subscribe(CompanySubscribe_View.java:223) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at javax.el.ELUtil.invokeMethod(ELUtil.java:308) 
at javax.el.BeanELResolver.invoke(BeanELResolver.java:537) 
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256) 
at com.sun.el.parser.AstValue.invoke(AstValue.java:286) 
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) 
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) 
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) 
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147) 
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813) 
at javax.faces.component.UICommand.broadcast(UICommand.java:300) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) 
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) 
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:78) 
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
at com.inmatic.kico.common.LoginFilter.doFilter(LoginFilter.java:53) 
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108) 
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) 
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) 
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:248) 
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:77) 
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:167) 
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) 
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:761) 
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.NoClassDefFoundError: com/paypal/api/payments/CreditCard 
at com.inmatic.kico.paypal.business.boundary.PayPalFacade.doCreditCardPayment(PayPalFacade.java:27) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) 
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:407) 
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:82) 
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:93) 
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) 
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:407) 
at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:46) 
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.component.interceptors.NonPooledEJBComponentInstanceAssociatingInterceptor.processInvocation(NonPooledEJBComponentInstanceAssociatingInterceptor.java:59) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309) 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:273) 
... 103 more 
Caused by: java.lang.ClassNotFoundException: com.paypal.api.payments.CreditCard from [Module "deployment.KicoLocal.war:main" from Service Module Loader] 
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) 
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) 
... 139 more 
+1

Ajouter le stacktrace complet – Jens

+0

Désolé, j'ai oublié de mentionner que j'ai essayé sans portée, compilez la portée et fournissez la portée et aucun ne semble faire la différence. – user744621

+0

J'ai maintenant ajouté la trace complète de la pile. – user744621

Répondre

0

Le problème le plus probable se trouve h avant:

<dependency> 
    <groupId>com.paypal.sdk</groupId> 
    <artifactId>rest-api-sdk</artifactId> 
    <version>LATEST</version> 
    <scope>compile</scope> 
</dependency> 

Tout d'abord comme d'autres l'ont dit, vous devriez essayer de supprimer la portée compile et reconstruire complètement votre projet.

Deuxièmement, n'utilisez jamais LATEST !! Toujours spécifier la version. L'utilisation de "latest" viole le principe des builds reproductibles. Il pourrait bien se construire aujourd'hui mais pas demain si le développeur change l'API (ça arrive).

Donc, supprimez le <scope>, verrouillez-le à une version spécifique (pas LATEST), reconstruisez le projet et faites mvn clean install.

+0

J'ai enlevé la portée, mis la version à 1.13.0 et fait un nettoyage et installation dans IntelliJ, mais toujours le même problème. – user744621

+0

Quelle classe spécifique (avec package) est introuvable? – vikingsteve