Stuff like this is hard to do using just Eclipse, because Eclipse is a development environment, not a runtime environment and Java's classpath rules require that you do some things that are complicated enough that a "one-size-fits-all" Eclipse build doesn't handle.
You can do one of 2 things:
1. You can create a batch file with an explicit classpath reference for the additional jar(s) such as log4j. Needless to say, the deployment of something like this gets complicated, since now you have a Java app jar, a log4j library jar and an MS-DOS batch file to install on the user's system instead of just a simple file copy.
2. You can build an executable JAR. This solution provides a single file, which can be executed using the "java -jar ...." command line. However, in order to resolve the log4j classes, you'll have to do something more. Either a) explode the log4j car and merge its classes into your application jar, or b) add a custom classloader to your app so that you can include the unexploded log4j.jar embedded in your executable jar.
The reason for the extra complexity is that jar-in-jar organization isn't supported by the default behaviour of the JVM, so you have to include your own classloader to locate and load classes from the embedded jar(s). However, this is more work than most of us want to go through. Fortunately, if you use
Maven, you can invoke the "build executable jar" goal and it will do all that for you.