System.out не работает при вызове jar-файла из командной строки Windows - PullRequest
13 голосов
/ 04 июня 2009

У меня есть этот класс:

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

И я использовал функцию Eclipse «Export to runnable JAR», чтобы превратить ее в исполняемый jar-файл (test.jar). Когда я запускаю эту программу в Eclipse, она выводит «Hello World!», Но когда я вызываю jar-файл из командной строки, ничего не происходит.

Я пытался вызвать jar-файл так:

test.jar
test.jar -jar

Нет выходных данных.

У меня есть другая программа, у которой также есть побочный эффект (в дополнение к выводу в stdout), и пока выполняется побочный эффект (который говорит мне, что jar-файл определенно был выполнен), опять-таки, никакой вывод на команду не передается линия. Я также пытался использовать stderr, но это не имеет значения. Кто-нибудь знает, как я могу сделать эту работу?

Спасибо!

Ответы [ 3 ]

32 голосов
/ 04 июня 2009

Вы должны запустить JAR, используя

java -jar test.jar

(папку bin вашего JRE необходимо добавить в PATH, чтобы команда работала из любого места)

ПРИМЕЧАНИЕ. Я знаю, что вы создали JAR-файл с использованием Eclipse, но вы можете узнать , как работает исполняемый файл JAR

8 голосов
/ 04 июня 2009

Предыдущие ответы верны, поэтому я просто поясню концепцию «исполняемого фляги». Нет такой вещи, как «исполняемый jar», эквивалентный exe-файлу в windows, в «исполняемом jar» вы будете указывать только точку входа (ваш основной класс, который вы хотите выполнить по умолчанию)

Jar - это просто архив, вам все равно понадобится java для его запуска (java -jar your.jar)

Тот факт, что в Windows у вас может быть ассоциация с javaw.exe, означает, что ОС запускает ее при двойном щелчке по банке, например, при открытии файла .txt автоматически с помощью блокнота .txt исполняемый файл.

Проверьте это также: Обнаружены файлы JAR

3 голосов
/ 04 июня 2009

Когда вы вызываете jar с помощью 'test.jar', запуск приложения передается зарегистрированному обработчику java для файлов jar, который не запускается в контексте командной строки.
Обработчик jar по умолчанию не открывает файловые дескрипторы System. {Out, err} на консоли, поскольку это будет означать окно стиля cmd для каждого из запущенных jar-файлов, что не является идеальной ситуацией.
Предыдущий ответ, используя java -jar test.jar, заставляет его работать в контексте текущего окна cmd, и, таким образом, вы увидите вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...