If memory serves me correctly, no, you can't shade+relocate logging
classes. The way that log4j/slf4j "find" the logging classes breaks
down when you do this.

However, if I'm wrong as I very well could be, shading could be an
effective solution to this.

Alternatively, we could generate an artifact which does not provide
logging classes; however, I think we'd need to consider the burden in
creating, maintaining, and distributing an extra jar just to remove an
slf4j warning (unless Liang's problem extends beyond that -- not sure)

On Sat, Dec 22, 2018 at 10:39 PM Miles Spielberg <mi...@box.com> wrote:
>
> Could the classes be shaded into a different package to prevent conflicts 
> with libraries included by applications? HBase client has been doing this for 
> a while: 
> https://www.i-programmer.info/news/197-data-mining/11427-hbase-14-with-new-shaded-client.html
>
> Sent from my iPhone
>
> On Dec 22, 2018, at 9:25 AM, Josh Elser <els...@apache.org> wrote:
>
> This is as expected. JDBC expects that a database driver provide all of its 
> dependencies in a single jar file.
>
> On Mon, Dec 17, 2018 at 4:39 PM Liang Zhao <lz...@casa-systems.com> wrote:
>>
>> Hi,
>>
>>
>>
>> We found slf4j class files in your phoenix-5.0.0-HBase-2.0-client.jar, which 
>> caused multiple binding of slf4j as the Spring Boot in our project uses a 
>> different version. We can work around this, but conventionally, a jar file 
>> only need to name its transitive dependencies, instead of including them.
>>
>>
>>
>> The same problem is seen in phoenix-4.14.0-HBase-1.4-client.jar.
>>
>>
>>
>> Thanks
>>
>>
>>
>> Liang
>>
>>
>>
>> <image001.png>
>>
>>

Reply via email to