Как создать загрузчик класса jar в файле jar? - PullRequest
0 голосов
/ 24 января 2019

Предположим, ниже файл JAR следующей иерархической структуры.

application.jar
  demo
    Main.class
  lib
    dep.jar
      dep
        DependencyMain.class

Я хочу создать загрузчик классов с помощью lib / dep.jar и загрузить класс DependencyMain.

private static void loadTest() throws Exception {
  File jarFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath());
  final JarFile jar = new JarFile(jarFile);
  final Enumeration<JarEntry> entries = jar.entries();

  String file = "jar:" + jarFile.toURI() + "!/";

  while (entries.hasMoreElements()) {
    JarEntry entry = entries.nextElement();
    if(entry.getName().endsWith("dep.jar") {
      // HAVE TO CHANGE 
      URL jarUrl = new URL(file + name);
      final JarURLConnection connection = (JarURLConnection)jarUrl.openConnection();
      final URL url = connection.getJarFileURL();

      ClassLoader classLoader = new URLClassLoader(new URL[]{jarUrl}, Main.class.getClassLoader());

      Class<?> clazz = classLoader.loadClass("dep.DependencyMain");
      // i want to load dep.DependencyMain class at here
      break;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...