2016-03-25 21 views
1

Ich habe 2 verschiedene porltets, die die gleiche Komponente HttpClientBuilder.java verwenden, wird es erste Arbeits ok, aber die mir zweite dieses erorr geben: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) 

ein Teil des Codes, die diesen Fehler erzeugen:

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

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

jemand mir bitte helfen?

EDIT: Wir sind mit WebLogic Portal von Oracle

+1

Vielleicht eine JAR-Version Problem. Laufen die zwei Portlets auf unterschiedlichen Servern? – duffymo

+0

Sie laufen auf dem gleichen Server, ich habe sie auf der DEV-Umgebung testen und arbeiten, auf, aber auf PROD funktioniert man ok, zweitens nicht –

+0

Etwas ist zwischen PROD und DEV. Finde es. Der Gedanke, dass "es hier funktioniert" sollte Sie nicht in Untätigkeit verfallen lassen. Ich denke, es ist ein JAR-Mismatch zwischen den beiden Umgebungen. – duffymo

Antwort

1

Wenn Sie Maven verwenden, um Ihre Abhängigkeit zu verwalten Sie in Ihrem pom.xml

wie unten eine neue Abhängigkeit hinzufügen
<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.3.5</version> 
    </dependency> 

Geben Sie weitere Informationen von Ihre Umgebung, wenn das nicht hilft.

+0

Wir verwenden das WebLogic Portal von Oracle –

0

Sicher es ein Classloading Thema ist, und dass canbe Klasse gefunden auf: Httpclient-4.5.jar

Sie können prüfen, aus dem JAR-Datei die funktionelle Portlet ist diese Klasse abrufen: http://devwebcl.blogspot.cl/2016/03/logging-of-class-loading-and-unloading.html

Ein Ansatz ist, den folgenden Code in dem genannten Code zu setzen:

ClassLoader cl = ClassLoader.getSystemClassLoader(); 

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

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

oder -nutzung: -verbose: class Systemeigenschaft, aber dies ist ausführlicher und Sie müssen Ihren Start sc ändern Schriften.

Auf diese Weise können Sie identifizieren, welche JAR-Datei fehlt. (Vielleicht ist es ein anderer Name für httpclient)