2016-03-25 1 views
1

У меня есть 2 разных porltets, которые используют один и тот же компонент HttpClientBuilder.java, первое, что он работает нормально, но второй дал мне этот Erorr:java.lang.NoClassDefFoundError: орг/Apache/HTTP/осущ/подкл/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: Мы используем WebLogic Portal с Oracle

+1

Возможно, проблема с версией JAR. Два портлета работают на разных серверах? – 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

Мы используем WebLogic Portal от Oracle –

0

Конечно, это проблема загрузки классов, и этот класс canbe найти по адресу: HTTPClient-4.5.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: класс системы собственности, но это более многословным, и вы должны изменить загрузочный СБН ripts.

Таким образом, вы можете определить, какой файл jar отсутствует. (возможно, это другое имя для httpclient)

Смежные вопросы