Usually when you compile in Release mode all libraries are merged into the generated jar file. This is useful as you get a single distributable file. However there are cases, especially when there are many referenced libraries that the developer might prefer to leave the libraries out of the jar. This way you can later update the program without copying all libraries.
The main scenario is server projects where you want to be able to update the server without copying all libraries (inside the jar) again and again.
Note that when you compile your app in Release mode you will see the list of libraries that are required by your app:
These libraries should be copied to a folder named libs under the jar file folder.