I've searched and read many posts about LGPL and C, and when I was able to find one that related to Java, my mind still didn't rest with ease, so I'll try to be more specific and hopefully get a viable guide lines, and I would eventually consult a lawyer obviously!Setup:There is a LGPL library, lets call it Lib-BI have My Library which is based on Lib-B lets call it My-LibIn my opinion Lib-B architecture is not well formulated, and I want to apply in My-Lib my own architecture and use some of the functions of Lib-B.Problem is, that Lib-B, wraps the functions I want to access in a manner that does not suit the architecture of My-Lib so I've changed Lib-B and encapsulated (duplicated) the code lines I wanted/needed within a couple of objects still inside Lib-B and call these functions from My-Lib.That is my current static setup...=====================The second thing I can do is to make my setup dynamic, so:I could create a Library that would define an interface with the functions My-Lib needs lets call it Lib-A.Later, I will compile and link My-Lib with Lib-A, and let Lib-B implement the interface from Lib-A, and load Lib-B dynamically in My-Lib.I understand that in both cases I must release my changes of Lib-B as LGPL as well and allow my end users access to the code etc... what about My-Lib?Thanks,Adam.
Using LGPL Library with Java static or Dynamic linking
licensing;lgpl
The LGPL allows you to release My-lib without opening its source code.  That's the whole purpose of the LGPL; it provides a linking exception to allow users to link the LGPL library without opening their own source.The LGPL still provides users with access to the source code of your changes to Lib-B, without preventing you from keeping the rest of your application closed-source.