System.out не работает при вызове jar файла из командной строки Windows
У меня есть этот класс:
public class Test {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
И я использовал функцию Eclipse "Экспортировать в runnable JAR", чтобы превратить ее в исполняемый jar файл (test.jar). Когда я запускаю эту программу в Eclipse, она выводит "Hello World!", Но когда я вызываю jar файл из командной строки, ничего не происходит.
Я попытался вызвать jar файл следующим образом:
test.jar
test.jar -jar
Нет никакого вывода.
У меня есть еще одна программа, которая также имеет побочный эффект (в дополнение к выходу на stdout), и в то время как выполняется побочный эффект (который говорит мне, что jar файл определенно выполнен), снова не выводится команда линия. Я также пытался использовать stderr, но это не имеет никакого значения. Кто-нибудь знает, как я могу сделать эту работу?
Спасибо!
Ответы
Ответ 1
Вы должны запустить JAR с помощью
java -jar test.jar
(Ваша папка JRE bin должна быть добавлена в PATH, чтобы заставить команду работать из любого места)
ПРИМЕЧАНИЕ. Я знаю, что вы создали JAR с помощью Eclipse, но вам может понадобиться как работает исполняемый JAR
Ответ 2
Предыдущие ответы верны, поэтому я просто немного разъясню концепцию "исполняемого баннера".
Там нет такой вещи, как "исполняемый jar", эквивалентный exe файлу в окнах, в "исполняемом банке" вы будете указывать только "точку входа" (ваш основной класс, который вы хотите выполнить по умолчанию)
Банку в основном просто архив, вам все равно нужно java для запуска jar (java -jar your.jar)
Тот факт, что в Windows у вас может быть ассоциация с javaw.exe, означает, что она будет запущена ОС при двойном щелчке по банке, например, как файл .txt, который автоматически открывается с помощью блокнота, он не делает .txt исполняемый файл.
Проверьте это также:
Файлы JAR показали
Ответ 3
Когда вы вызываете банку с помощью "test.jar", запуск приложения передается зарегистрированному обработчику java для файлов jar, который не запускается в контексте командной строки.
Обработчик jar по умолчанию не открывает консольные системы. {Out, err}, поскольку это будет означать окно стиля cmd для каждого из запущенных файлов jar, что не является идеальной ситуацией.
Предыдущий ответ с использованием java -jar test.jar заставляет его запускаться в контексте текущего CMD-окна и, следовательно, вы увидите вывод.