Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ClassLoader


Автор: Grizli 20.4.2012, 14:59
Здравствуйте, появилась небольшая проблема, я хочу что-бы можно было запустить из .jar другой джарник, собственно из приложение App1.jar запустить App2.jar 
Вот собственно, что я пишу 
Код

        File jar = new File(mainDir, "App2.jar");
        URL[] urls = new URL[1];
        try
        {
          urls[0] = jar.toURI().toURL();
        }
        catch (MalformedURLException e) {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }
        ClassLoader classLoad = new URLClassLoader(urls);
        Class mainClass = null;
        Class rsrcClass = null;
        try {
          mainClass = classLoad.loadClass("org.spoutcraft.launcher.Main");

        }
        catch (ClassNotFoundException e)
        {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }
        catch (SecurityException e) {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }

        try
        {
          mainClass.newInstance();
        }
        catch (InstantiationException e)
        {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }
        catch (IllegalAccessException e) {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }
        catch (Exception e) {
          e.printStackTrace();
          System.out.print("Что-то тут не так... \n Stopping...");
          System.exit(0);
        }


И после того как я запустил App1.jar у меня начинается запуск App2.jar но выдаёт java.lang.reflect.InvocationTargetException...
Собственно вот META-INF файл приложения App2.jar
Код

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

Я так-же пробовал изменить MainClass на org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader, но приложение вообще ничегоо не выдаёт в консоль и App2.jar не запускается. Может кто знает, как это пофиксить?

Автор: Grizli 20.4.2012, 18:28
Пожалуйста помогите, как это пофиксить дело ну очень важное и нужно быстрое решение

Автор: aleksandy 23.4.2012, 07:39
Запускай приложение в отдельной jvm через Runtime.exec().

Автор: Grizli 23.4.2012, 07:51
aleksandy,  извините забыл выставить статус решена.

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