2016-03-25 9 views
1

私が最初にそれがOK働いて、同じコンポーネントHttpClientBuilder.javaを使用する2つの異なるporltetsを持っているが、2番目の私は、この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) 

このエラーを生成するコードの一部:

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

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

は、いくつかのいずれかが私を助けてくださいことはできますか?

EDIT:私たちはあなたのpom.xmlに以下のように新しい依存関係を追加することができ、あなたの依存関係を管理するために、Mavenを使用している場合のOracle

+1

多分JARバージョンの問題です。 2つのポートレットは異なるサーバー上で稼動していますか? – duffymo

+0

彼らは同じサーバー上で動作していますが、私はDEV環境でそれらをテストしていますが、PRODでは1つは正常に動作していて、2番目は動作していません –

+0

PRODとDEVの間に何か違いがあります。それを見つける。 「ここで働いている」という考えは、あなたを休止させてはいけません。私はそれが2つの環境のJARの不一致だと思う。 – duffymo

答えて

1

からのWebLogic Portalを使用している

<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ファイルは、そのクラスの検索機能ポートレットであるから確認することができます。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の別の名前です)