ライブラリを作成してjarファイルとして公開しました。 。他のアプリケーションでは私のライブラリを使用していました。java.lang.NoSuchMethodError:org.jboss.netty.handler.codec.http.HttpRequest.setHeader(Ljava/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)
私はすでに古いネッティーに依存してサードパーティのライブラリ(scalaxb)の最新バージョンを使用しています。
私のライブラリがアプリケーションのアップグレードプロセス全体を保持しているため、これは実際には致命的です。
おそらく、古いバージョンの依存関係、https://github.com/sbt/sbt-assembly#shading –