2017-11-12 11 views
0

. 다른 응용 프로그램은 내 라이브러리를 사용했으며 모든 것이 훌륭했습니다.나는 라이브러리를 작성하여 jar 파일로 게시했다. (lib/lang/String; Ljava/lang/Object;) V

이제 다른 응용 프로그램은 종속성을 업그레이드했습니다. 그리고 지금 그들이 달릴 때. 내 라이브러리를 호출하면 응용 프로그램이 충돌합니다. 현재 응용 프로그램은 netty 4.1.8에 의존하고있는 반면 내 라이브러리는 이전 버전을 사용하는 타사 라이브러리에 의존합니다. 이제 다른 응용 프로그램을 빌드 할 때 sbt가 내 netty 버전을 새 응용 프로그램과 함께 제거합니다. 최신 netty 버전에는 내 코드가 의존하는 메소드가 없습니다.

따라서 예외

org.jboss.netty.handler.codec.http.HttpRequest.setHeader(Ljava/lang/String;Ljava/lang/Object;)V" 
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.construct(NettyAsyncHttpProvider.java:693) 
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.buildRequest(NettyAsyncHttpProvider.java:650) 
com.ning.http.client.providers.netty.NettyConnectListener$Builder.build(NettyConnectListener.java:144) 
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.doConnect(NettyAsyncHttpProvider.java:1070) 
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.execute(NettyAsyncHttpProvider.java:935) 
com.ning.http.client.AsyncHttpClient.executeRequest(AsyncHttpClient.java:499) 
dispatch.HttpExecutor$class.apply(execution.scala:47) 
dispatch.Http.apply(execution.scala:12) 
dispatch.HttpExecutor$class.apply(execution.scala:42) 
dispatch.Http.apply(execution.scala:12) 
scalaxb.DispatchHttpClients$DispatchHttpClient$class.request(httpclients_dispatch.scala:21) 
scalaxb.DispatchHttpClients$$anon$1.request(httpclients_dispatch.scala:6) 
scalaxb.SoapClients$SoapClient$class.soapRequest(soap12.scala:41) 
scalaxb.SoapClients$$anon$1.soapRequest(soap12.scala:23) scalaxb.SoapClients$SoapClient$class.requestResponse(soap12.scala:60) 
scalaxb.SoapClients$$anon$1.requestResponse(soap12.scala:23) 

이미 오래된 그물코에 따라 제 3 자 라이브러리 (scalaxb)의 최신 버전을 사용하고 있습니다.

내 라이브러리가 응용 프로그램의 전체 업그레이드 프로세스를 보류하고 있기 때문에 이것은 실제로 죽입니다.

+0

이전 버전의 종속성을 음영 처리하는 것이 좋습니다. https://github.com/sbt/sbt-assembly#shading –

답변

1

라이브러리를 사용하는 관리자가 특정 버전의 netty를 필요로하며 최신 버전과 호환되지 않는다는 점을 제외하고는이 점에 대해 많이 할 수 있습니다. 그들은 다운 그레이드하거나 라이브러리를 다른 것으로 대체해야합니다.