JRE not using classpath specified by manifest file of runnable jar

Viewed 2315

First post, so sorry for my poor formatting. I have a java program that I developed in eclipse. I exported the program as a jar (myJar.jar), and then I put all of the external jars that my program depends on into a folder called lib that lives in the same location as myJar.jar. In order to set my classpath I have a manifest file with the following format:

Main-Class: exe.myMain
Class-Path: lib/jar_1.jar lib/jar_2.jar ... lib/jar_n.jar
Manifest-Version: 1.0

However, when I attempt to run the program using "java -jar myJar.jar" the classes from the jars that live in lib are not being loaded (I'm getting a ClassNotFoundException) . I used the following code in my program to print the classpath:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url:urls){
    System.out.println(url.getFile());
}

And when I run this code the classpath is simply "myJar.jar".

I have two questions:

1.) Does the above code actually give me the classpath for the JRE at run time, or am I simply being given the address of my main class?

2.) Given the above code does indeed give me the classpath for the JRE at run time, am I doing anything wrong?

Please feel free to ask for more information, and I will happily provide what you need.

2 Answers
Related