2016-03-25 1 views
1

J'ai 2 différents porltets qui utilisent le même HttpClientBuilder.java de composants, d'abord il fonctionne bien, mais le second me donner cette erorr:java.lang.NoClassDefFoundError: org/apache/http/impl/conn/ManagedHttpClientConnectionFactory

java.lang.NoClassDefFoundError: org/apache/http/impl/conn/ManagedHttpClientConnectionFactory 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.(PoolingHttpClientConnectionManager.java:493) 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:149) 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:138) 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:114) 
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726) 
at com.firm.msite.portlet.shops.StoreJSON.load(StoreJSON.java:55) 
at com.firm.msite.portlet.shops.ShopsPortlet.doView(ShopsPortlet.java:137) 
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328) 
at javax.portlet.GenericPortlet.render(GenericPortlet.java:233) 
at com.bea.portlet.container.PortletStub.doRender(PortletStub.java:942) 
at com.bea.portlet.container.FilterChainGenerator.runFilterChain(FilterChainGenerator.java:125) 
at com.bea.portlet.container.PortletStub.render(PortletStub.java:414) 
at com.bea.portlet.container.AppContainer.renderStub(AppContainer.java:1123) 
at com.bea.portlet.container.AppContainer.invokeRender(AppContainer.java:1055) 
at com.bea.netuix.servlets.controls.content.JavaPortletContent.fireRender(JavaPortletContent.java:267) 
at com.bea.netuix.servlets.controls.content.JavaPortletContent.renderInternal(JavaPortletContent.java:162) 
at com.bea.netuix.servlets.controls.content.JavaPortletContent.beginRender(JavaPortletContent.java:108) 
at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:485) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) 

une partie de code qui génère cette erreur:

long beginTime= (new Date()).getTime(); 
      CloseableHttpClient client = HttpClientBuilder.create().build(); 
      HttpGet request = new HttpGet(this.url); 

      // add request header 
      CloseableHttpResponse response = client.execute(request); 

quelqu'un peut me aider s'il vous plaît?

EDIT: Nous utilisons WebLogic Portal d'Oracle

+1

Peut-être un problème de version JAR. Les deux portlets sont-ils exécutés sur des serveurs différents? – duffymo

+0

Ils sont en cours d'exécution sur le même serveur, je les ai testés sur l'environnement DEV et travaillons, mais, sur PROD, un fonctionne bien, d'autres pas –

+0

Quelque chose est différent entre PROD et DEV. Trouve le. La pensée que «ça marche ici» ne devrait pas vous geler dans l'inaction. Je pense que c'est une discordance entre les deux environnements. – duffymo

Répondre

1

Si vous utilisez Maven pour gérer votre dépendance, vous pouvez ajouter une nouvelle dépendance comme ci-dessous dans votre pom.xml

<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.3.5</version> 
    </dependency> 

Fournir plus d'informations de votre environnement, si cela ne vous aide pas.

+0

Nous utilisons WebLogic Portal d'Oracle –

0

Certes, il est un problème de classloading, et que canbe de classe à l'adresse: httpclient-4.5.jar

Vous pouvez vérifier à partir de laquelle le fichier jar est le portlet fonctionnel récupérer cette classe: http://devwebcl.blogspot.cl/2016/03/logging-of-class-loading-and-unloading.html

Une approche est de mettre le code suivant dans le code mentionné:

ClassLoader cl = ClassLoader.getSystemClassLoader(); 

    URL[] urls = ((URLClassLoader)cl).getURLs(); 

    for(URL url: urls){ 
    System.out.println(url.getFile()); 
    } 

ou de l'utilisation: -verbose: class propriété système, mais cela est plus bavard et vous devez changer votre démarrage sc des mûres.

De cette façon, vous pouvez identifier le fichier jar qui manque. (peut-être que c'est un nom différent pour httpclient)