Setting Java Classpath to load class file

I'm new to Java and I'm not sure how to access a class file in a specific directory from a separate jar program.

For example, I have a third-party jar file located in / that should load MyClass located in /mylib/MyClass.class, so I tried to run:

java -jar mainprog.jar -classpath "/mylib" MyClass

but I get an error:

Exception in thread "main" java.lang.NoClassDefFoundError: MyClass
Caused by: java.lang.ClassNotFoundException: MyClass
        at java.net.URLClassLoader$1.run(URLClassLoader.java:221)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:209)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:324)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:337)

What am I doing wrong?

+5
source share
2 answers

When you use "-jar", only the attribute Class-Pathdefined in the file META-INF/MANIFEST.MFinside the file jarwill affect the class path.

MyClass (, , , MANIFEST.MF).

jar, :

java -cp mainprog.jar:/mylib MyClass
// or using this one on windows:
java -cp mainprog.jar;/mylib MyClass
+11

MyClass , , .

, , . jar jar -xf mainprog.jar META-INF/MANIFEST.MF. , , jar ( ).

:

java -classpath /mainprog.jar:/mylib package.name.to.jar.MainClass
+2

All Articles