Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Выполнение джар, из другого джарника


Автор: Grizli 22.4.2012, 13:54
Здравствуйте. У меня есть App1.jar и App2.jar, в App2.jar, который я хочу запустить из первого аплета у меня есть библиотеки, которые хранятся в самом приложении, при запуске App1.jar у меня идёт проверка на мд5 соответсвие App2.jar и если он не совпадает то первый аплет закачивает второй. После того, как прошла проверка App1.jar мне должен запустить App2.jar. Собственно в App1.jar я и пишу 
Код

 public static void startApp2()
    {
      File jar = new File(mainDir, "Launcher.jar");
      try
      {
        Runtime.getRuntime().exec("java -jar " + jar);
      }
      catch (Exception e)
      {
        e.printStackTrace();
        new JOptionPane();
        JOptionPane.showMessageDialog(null, e);
      }
    }

И вызываю его из мейн метода в первом аплете. Первый раз, когда у меня первый аплет скачал второй всё запустилось, но последующие разы уже ничего не запускается...

Вот мета-инф второго приложения
Код

Manifest-Version: 1.0
Rsrc-Class-Path: ./ rome-1.0.jar com.springsource.org.apache.commons.c
 odec-1.4.0.jar swing-layout-1.0.2.jar snakeyaml-1.8.jar com.springsou
 rce.com.sun.syndication-1.0.0.RC1.jar jdom-1.1.3.jar jcommander-1.7.j
 ar
Class-Path: .
Rsrc-Main-Class: org.spoutcraft.launcher.Main
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Автор: Grizli 22.4.2012, 15:36
Хотя-бы я могу через ClassLoader загрузить мейн класс второго алпета, что-бы приложение запустилось? Если да, то как?

Автор: Grizli 22.4.2012, 16:50
Попробовал вот так
Код

public static void startApp2()
    {
      File jar = new File(mainDir, "Launcher.jar");
      URL[] urls = new URL[1];
      try
      {
        urls[0] = jar.toURI().toURL();
      }
      catch (MalformedURLException e) {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }
      ClassLoader classLoad = new URLClassLoader(urls);
      Class mainClass = null;
      try {
        mainClass = classLoad.loadClass("org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader");
      }
      catch (ClassNotFoundException e)
      {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }
      catch (SecurityException e) {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }

      try
      {
        mainClass.newInstance();
      }
      catch (InstantiationException e)
      {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }
      catch (IllegalAccessException e) {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }
      catch (Exception e) {
        e.printStackTrace();
        System.out.print("Чтот случилось... Остановка...");
        System.exit(0);
      }
    }


Не работает...

Автор: Grizli 22.4.2012, 17:46
Спасибо всем, решил сам...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)