Как открыть .bat, содержащий графический интерфейс, в Java-программе в Linux? - PullRequest
1 голос
/ 19 ноября 2011

все. Я здесь новичок, поэтому, пожалуйста, будьте терпимы, если я сделаю какие-либо ошибки.

У меня есть файл .bat, содержащий командную строку, чтобы открыть файл .jar, содержащий программу с графическим интерфейсом пользователя. Единственная строка в файле .bat:

    java -jar "NewServer.jar" 

Я пытался использовать Runtime (), чтобы запустить его, но большинство инструкций, которые я нахожу, чтобы открыть файл .bat в java-программе, предназначены для Windows. В настоящее время я использую Fedora 12 (не говорите мне, чтобы обновить, я не могу), если это имеет значение, и программирование с использованием Eclipse. Я также нашел эту вещь в ProcessBuilder, но не смог заставить ее работать, поэтому, если у вас нет четких указаний о том, как ее использовать, пожалуйста, не включайте ее в свой ответ. Я бы предпочел использовать Runtime. Выглядело проще.

Вот мой код для тестирования с использованием Runtime в Java-программе. Я надеюсь, что если я смогу заставить это работать, я смогу заставить его работать в моей настоящей программе.

import java.io.IOException;

public class testbat {

  public static void main(String[] args) {

    Process proc = null;
    try {
        proc = Runtime.getRuntime().exec("./ myServer.bat");
    } catch (IOException e) {

        e.printStackTrace();
    }

      System.out.println("Cool");


}

Последняя строка предназначена для того, чтобы увидеть, действительно ли программа запускалась в случае, если графический интерфейс не открывается. Кроме того, я уже пробовал много комбинаций вещей для включения в область после ".exec". Я пытался использовать путь типа "~ / user / workspace / ProjectServer / dist / myServer.bat", но безрезультатно.

Я также уже знаю, что .bat-файлы предназначены для Windows, но я могу выполнить его в Linux, поэтому я не знаю, имеет ли это значение. Я также попытался использовать файл .sh таким же образом, и он не работал.

Пожалуйста, имейте в виду, что я не настолько хорош в Java, но мне пришлось использовать его для этой конкретной программы, поэтому, если ваши ответы могут быть действительно описательными, это было бы здорово.

Ответы [ 5 ]

4 голосов
/ 19 ноября 2011

Просто извлеките эту строку из файла bat и запустите ее. Ты делаешь это слишком сложно.

$ java -jar "NewServer.jar"

будет работать. Цитаты не обязательны, поэтому

$ java -jar NewServer.jar

тоже будет работать. Если вы хотите иметь эквивалент вашего файла bat, создайте файл с именем, скажем, run_newserver, содержащий эту строку. Измените его режим на исполняемый:

$ cat > run_newserver
java -jar NewServer.jar
^D
$ chmod a+x run_newserver
$ ./run_newserver

В идеале, поскольку у вас не должно быть сценариев без комментариев, сделайте это. В вашем любимом редакторе создайте файл run_newserver, содержащий

#!/usr/bin/env bash
java -jar NewServer.jar

и chmod это. Строка с #! - часто называемая «линией Шебанга» - это магия UNIX, которая позволяет вам сказать, какой интерпретатор вам нужен. Программа env в usr/bin находит вашу программу и запускает ее (необходимо, потому что разные системы помещают bash в разные каталоги.)

Вы можете даже добавить пояснительные комментарии в файл.

Мне немного непонятно, почему вы хотите использовать Runtime # exec для его запуска - кажется, вам просто потребуется сценарий оболочки для запуска этой программы.

1 голос
/ 19 ноября 2011

Почему вы используете Java для запуска Batch-файла, который, в свою очередь, запускает Java-программу? Почему Batch в цикле вообще? Просто вставьте банку в свой путь к классу и позвоните прямо.

0 голосов
/ 19 ноября 2011

Процесс инициализируется только при первом вызове. Вам нужно запустить:

proc.waitfor();

чтобы заставить его реально запустить ваше приложение.

0 голосов
/ 19 ноября 2011

Просто откройте терминал и сделайте это

vi /dir/to/exec/exec.sh

коснитесь «я» и напишите это

#!/bin/sh
java -jar "NewServer.jar"

или если вы хотите запустить его в фоновом режиме

#!/bin/sh
java -jar "NewServer.jar" & > /tmp/JavaServer.log

нажмите esc и введите ": wq", и вы сохранили файл.

введите это в терминал

chmod +x /dir/to/exec/exec.sh

это дает исполняемые привилегии, а затем вы должны запустить файл как

sh /dir/to/exec/exec.sh
0 голосов
/ 19 ноября 2011

Пакетные (.bat) файлы предназначены только для среды Windows. Итак, попробуйте использовать сценарий оболочки

 Process proc = Runtime.getRuntime().exec("myServer.sh");
...