Страницы

Поиск по вопросам

четверг, 21 марта 2019 г.

Нужны ли переменные среды для запуска java приложений?

Борюсь с проблемой распространения написанного на java приложения на компьютеры, не имеющие установленной java.
К сожалению, exe-приложения, как бы я их ни делал, получаются крайне нестабильными:
IntelliJ IDEA (exe из bundle полученного artifact даже у меня не всегда запускается) launch4j (javaw.exe мелькает в процессах лишь на секунду; jre находится в папке с приложением, это указано при создании в launch4j) etc
И я решил, что проще вынудить пользователей установить java, чем мучиться с упаковкой и прочим.

Появляется логичный вопрос: достаточно ли скачивания и установки Java (java.com/download) чтобы приложение работало стабильно и без любых ошибок, несмотря на то, jar это или exe, полученный любым из способов? Или нужно что-то ещё настраивать, устанавливать переменные среды и прочее?
Если это необходимо, придётся это автоматизировать, не все юзвери в состоянии подобное сделать :)
Если я мыслю крайне неправильно, или допускаю ошибки, из-за которых приложения становятся нестабильными и не работают, прошу указать на это и, если возможно, показать, как сделать это правильно (хотя, не знаю, как я мог допустить ошибку при создании exe через launch4j, нажав всего две кнопки).
Также, если есть более простые способы распространить java-приложение, буду рад узнать.

UPDATE: Сначала просто скинул jar из bundle человеку, у которого стоит java последней версии на компьютере, он тоже не запустился, потом собрал artifact-jar в IDEA, полученный файл тоже скинул - эффект такой же, как и с exe-шником: javaw.exe мелькает в процессах на секунду, и всё, программа не запускается. Так происходит, где бы не лежал файл. В чём проблема? Что я делаю не так?


Ответ

Для запуска написанных на Java приложений на других компьютерах, где установлена Java, не нужны переменные среды. (проверено) Скачивания и установки Java с java.com/download вполне достаточно для работы приложения. Для себя выявил два возможных пути удобного распространения приложения: если не вынуждать пользователя устанавливать Java, можно чтобы один раз он скачал папку с jre (путь до которой указывается, например, при создании exe из jar с помощью launch4j; либо можно предоставить пользователю папку с jre и запускать jar файл с помощью jre/bin/java -jar app.jar - спасибо за наводку товарищу Regent), и, впоследствии, чтобы обновлять программу у пользователя, можно просто предоставлять ему jar или exe файл, чтобы он помещал его с заменой в бывшую директорию приложения. Если же у пользователя установлена Java, нет никакой необходимости в дополнительном предоставлении чего-либо, достаточно исполняемого файла. Конкретно по моей проблеме: javaw.exe запускался лишь на секунду, потому что программа работала с ошибкой (в коде я указал абсолютный путь до иконки программы, и поэтому была самая тривиальная ошибка Can't read input file, но у меня на компьютере проблем, естественно, не было; Спасибо товарищу Regent, натолкнул на мысль о возможной ошибке).

Комментариев нет:

Отправить комментарий