1. I have a project, say, "PROJECT" which depends on 3 user libraries "UI", "PRINT" and "UTILITY". 2. "UI" and "PRINT" also depend on "UTILITY". "UTILITY" depends on mail.jar and mysql_connector.jar which are located in /usr/share/java. 3. This works: In "UTILITY" build path specify mail.jar and mysql_connector.jar as external libraries. In "UI" and "PRINT" build path specify "UTILITY" as project (not a Library). In "PROJECT" build path specify "UTILITY", "UI" and "PRINT" as projects not Libraries. Export "PROJECT" as "export required libraries into generated jar. 4. The problem with this is that I end up with bloated jar files for all projects using my libraries. Also any change to a library requires re-export of all projects. 5. This is what I would like to do: In "UI" and "PRINT" build path specify "UTILITY" as a library, utility.jar which I would put in /usr/share/java. In "PROJECT" build path specify "UTILITY", "UI" and "PRINT" as libraries in /usr/share/java. Export all my projects as "Package required libraries into generated jar". This would produce a much smaller .jar fie and any changes to a librar would only require the library .jar to be exported and deployed into /usr/share/java to take effect. 6. If I do 5 above my project will run any of the functions in "UI" and "PRINT". It will also run any functions from "UTILITY" which have no further dependencies. It will fail to run functions in "UTILITY" which are dependent on mail.jar or mysql_connector.jar. It returnse a Null Object error because it cannot create an object.