简体   繁体   中英

URLClassLoader trying to get a class from external jar always returning null

I am trying to load a class from a jar that is sitting in a directory. The structure of the class I am trying to grab is as follow:

myapp.jar
|__META-INF
|__com
   |__myapp
      |__config
         |__PlumberConfig.class

This is how I tried to grab the class:

        File file = new File("C:/_workspace/_jar/myapp.jar");
        URL url = file.toURI().toURL();
        URL[] urls = new URL[]{url};

        URLClassLoader ucl = new URLClassLoader(urls, ClassLoader.getSystemClassLoader());
        LOG.info("URLClassLoader: {}", ucl.getName()); // here always null
        Class c = ucl.loadClass("com.myapp.config.PlumberConfig");

The result of new URLClassLoader() is always null hence I cannot go further from this point.

I double-checked everything (the path, name of the jar, and location of the class itself) but seems I am still missing something.

Your code is working but the method getName() is not defined on URLClassLoader. Try ucl.getURLs() instead. Than it should work as expected.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM