Making jar by hand, with dep Back to the basic

I happened to have problem running a jar with dependencies, and I found my-self wondering: Do I really know how it works?

I don’t remember having ever done it manually, so I tried. It is a good thing to be sure of what we know. Here is the code, lets two classes A and B. A’s got the main and requires B:

package one.pack;
import two.pack.B;
public class A{
    public static void main(String args[]){
        B b = new B();
        b.println("Hello world");
package two.pack;
public class B{
    public void println(String message){
        System.out.println("B says: "+message);

Now, let’s compile everything

# compile into B.jar
javac -d .    # "-d .": automatically create folders two/pack/
jar -cf B.jar two/     
# compile into A.jar
javac -cp B.jar -d .   # include B.jar in the classpath
jar -cf A.jar one/

Finally, move A.jar and run it

mv A.jar /somewhere/else
java -cp /somewhere/else/A.jar:B.jar one.pack.A

Output: `B says: Hello world`

Conclusion, it is just as expected but now at least I’m sure of it 🙂