Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск другого приложения 
V
    Опции темы
Angfal
Дата 28.3.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Как из Java-программы запустить приложение, находящееся в *.jar архиве?
PM MAIL   Вверх
AntonSaburov
Дата 28.3.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Запустить как обычнй процесс наверно - для 1.5 лучше использовать ProcessBuilder. А так - Runtime.exec()
PM MAIL WWW ICQ   Вверх
Angfal
Дата 28.3.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Я пробовал, вылетает по эксепшену. 
Вообще, мне говорили, что надо с ClassLoader'ом что-то мудрить, только у меня особо ничего путного не вышло.
PM MAIL   Вверх
Maksym
Дата 28.3.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(Angfal @  28.3.2007,  12:17 Найти цитируемый пост)
Я пробовал, вылетает по эксепшену. 

Какому?
PM MAIL   Вверх
Angfal
Дата 28.3.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Цитата(Maksym @ 28.3.2007,  12:39)
Цитата(Angfal @  28.3.2007,  12:17 Найти цитируемый пост)
Я пробовал, вылетает по эксепшену. 

Какому?

java.io.IOException

Добавлено через 1 минуту и 30 секунд
Я уточню, в *.jar-архиве находятся откомпилированные классы другого java-приложения
PM MAIL   Вверх
AntonSaburov
Дата 28.3.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



так тебе надо что сделать - приложение запустить как отдельный процесс или в рамках той же JVm загрузить класс и сиполнить какой-то метод ?

Да и просто IOException - мало что говорит. Код бы посмотреть. Да и сообщение какое конкретно было.
PM MAIL WWW ICQ   Вверх
Angfal
Дата 28.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Мне надо запустить приложение как отдельный процесс.

Приведу пример кода, который я использую:

Код

public static void main(String[] args) {
        try{
            Process pr = Runtime.getRuntime().exec("c:\\test.jar");
        }
        catch (Exception ex){
            System.out.print(ex.toString());
        }
    }


Это сообщение отредактировал(а) Angfal - 28.3.2007, 14:43
PM MAIL   Вверх
AntonSaburov
Дата 28.3.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



А javaw.exe перед запуском jar писать не надо ?

Добавлено через 13 минут и 10 секунд
Может все-таки иногда пытаться смотреть откуда ноги у JAVA растут ?

Дано два класса

Код

public class run
{
   public static void main(String[] arg)
   {
      try {
         Runtime.getRuntime().exec("java.exe -cp test.jar test");
      }
      catch(Exception e) {
         e.printStackTrace();
      }
   }
}


Код

import java.io.*;

public class test
{
  public static void main(String[] arg)
  {
    try {
      FileWriter fw = new FileWriter("test.txt");
      String s = "Hi from other application";
      fw.write(s, 0, s.length());
      fw.close();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
}



Для сборки можно прямо из командной строки:
javac *.java

Для получения архива:
jar cf test.jar test.class

Для запуска примера:
java run

Смотрим после окончания - появится файл test.txt

PM MAIL WWW ICQ   Вверх
Angfal
Дата 28.3.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Спасибо!!!

Изменил код:

Код

public static void main(String[] args) {
        try{
            Process pr = Runtime.getRuntime().exec("javaw.exe c:\\test.jar");
        }
        catch (Exception ex){
            System.out.print(ex.toString());
        }
    }


Теперь придирается, что не может найти главный класс. Его что, надо указывать явно? Если да то как?




Это сообщение отредактировал(а) Angfal - 28.3.2007, 15:45
PM MAIL   Вверх
AntonSaburov
Дата 28.3.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Попробуй такую командную строку

java -jar test.jar

Но возможно, что там не прописан главный класс в manifest.mf

Тогда придется указать полный путь до класса
PM MAIL WWW ICQ   Вверх
Angfal
Дата 29.3.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Что б ты исправил мой код, так, чтобы он работал! smile
PM MAIL   Вверх
AntonSaburov
Дата 29.3.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Ну предположим, что твой класс находится в пакете com.mypack.run - называется RunMe
Тогда запуск такой:

javaw -cp c:\\test.jar com.mypack.run.RunMe
PM MAIL WWW ICQ   Вверх
Angfal
Дата 30.3.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 28.3.2007,  15:15)
Попробуй такую командную строку

java -jar test.jar

Попробовал, всё получилось!!! smile

Большое спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1155 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.