2016-03-25 95 views
1

我必須使用相同的組件HttpClientBuilder.java 2個不同porltets,首先它的工作不錯,但第二個給我這個erorr:java.lang.NoClassDefFoundError:組織/阿帕奇/ HTTP/IMPL /康涅狄格州/ 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) 

生成該錯誤的代碼的一部分:

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

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

有人可以幫我嗎?

編輯:我們正在使用WebLogic門戶從Oracle

+1

也許是JAR版本問題。這兩個portlet是否在不同的服務器上運行? – duffymo

+0

他們在同一臺服務器上運行,我已經在DEV環境中測試了它們,並且正在運行,但是在PROD上,一個工作正常,其次不在 –

+0

PROD和DEV之間有所不同。找到它。 「在這裏工作」的想法不應該讓你陷入無所作爲。我認爲這是兩種環境之間的JAR不匹配。 – duffymo

回答

1

如果您正在使用Maven來管理你的依賴,你可以在你的pom.xml如下添加新的附屬

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

提供更多信息你的環境,如果這沒有幫助。

+0

我們使用Oracle的WebLogic Portal –

0

當然,這是一個類加載的問題,並且該類canbe發現在:HttpClient的-4.5.jar

您可以檢查從jar文件是功能性的portlet獲取該類:http://devwebcl.blogspot.cl/2016/03/logging-of-class-loading-and-unloading.html

一種方法是把下面的代碼中提到的代碼:

ClassLoader cl = ClassLoader.getSystemClassLoader(); 

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

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

或使用:-verbose:類系統屬性,但是這是更詳細的,你需要更改啓動SC ripts。

這樣你就可以識別哪個jar文件丟失了。 (可能它是httpclient的不同名稱)

相關問題