2012-01-04 3 views
2

У меня есть одно основное приложение, которое запускает два других процесса, мне просто нужно запустить их как самостоятельный процесс. например, запускать их самостоятельно, не используя или не разделяя мою основную прикладную программу памяти процесса или процессора.Как выполнить полностью независимое приложение с Java. Как независимый процесс

Но когда я запускаю его, как этот ДВА, другой процесс не выполняется (ну, они создают ДВА нового процесса, но не вымышленного), если только я не уничтожу основной процесс. Мой план состоит в том, чтобы выполнить его под окнами, так же как и в командной строке THREE, где он выполняет три приложения.

Как решить эту проблему, чтобы выполнить три исполнения полностью в одиночку?

/*This is Process 1 itself*/ 
try { 

    if (myStock.getOs().equals("Linux")) 
    { 
    Runtime.getRuntime().exec("java -cp /var/dist/test.jar main.main");   
    Runtime.getRuntime().exec("java -cp /var/dist/test.jar www.webserver_starter"); 

    } else { 

    /*Windows 7 only*/ 
    String WindowsTemp = System.getenv("MY") + "\\"; 
    /*This is Process 2*/ 
    Runtime.getRuntime().exec("java -cp " + WindowsTemp + "dist\\test.jar main.main");   
    /*This is Process 3*/ 
    Runtime.getRuntime().exec(
     "java -cp " + WindowsTemp + "dist\\test.jar www.webserver_starter"); 
    } 

} catch(Exception e) { 
    System.out.println(e); 
} 

ответ

6

Для Окна использование cmd /c start ... где '...' это команда, которую вы хотели бы вызвать.

Runtime.getRuntime().exec("cmd /c start java -cp /var/dist/test.jar main.main") 

Для Linux добавить & в конце команды для запуска процесса демона.

+2

Вы также можете использовать ProcessBuilder, который выполняет то же самое. – Mitch

+0

@Wojtek O .: Я попробовал, как вы только что объяснили на ПК с Windows 7. И у меня такая же точная проблема, как без 'cmd/c start ' – YumYumYum

+0

Работает. 'cmd/c start' - это когда мы хотим видеть в диспетчере задач, а также на панели задач. Без 'cmd/c start' выполняет ту же работу, но скрывает панель задач + панель, когда кто-то требует запуска одного центрального приложения и одновременно запускает много (в моем случае). Оба, похоже, работают. Большое спасибо. – YumYumYum

Смежные вопросы