Как я должен связать Java с моим приложением Windows? - PullRequest
11 голосов
/ 14 мая 2011

У меня есть приложение Windows, основанное на Java, которое я хотел бы установить в комплекте с Java.Основой установки является NSIS.Исполняемый файл приложения должен гарантированно вызывать прилагаемую Java, так что нет никакого конфликта с другими Javas, установленными в системе.

Какой лучший способ достичь моей цели?Я не пытался решить эту проблему раньше, и у меня мало опыта работы с Java, поэтому я не знаю, какие есть решения.Я думаю, я бы предпочел, чтобы Java была встроена в исполняемый файл приложения, если это возможно, в противном случае, я думаю, Java может быть установлен вместе с ним (с указанием исполняемого файла на указанную Java).

Редактировать: Этот проект уже генерирует исполняемый файл (.exe) через NSIS.Исполняемый файл по умолчанию будет использовать системную Java, но, очевидно, он предпочтет JRE в том же каталоге (то есть в комплекте), если он присутствует.

Edit 2 : сценарий, который заставил меня хотетьсвязывание Java с этим приложением состояло в том, что я получил исполняемый файл для него, построенный с 32-разрядной Java, которая потерпела неудачу (молча) в моей системе с 64-разрядной Java.

Ответы [ 4 ]

1 голос
/ 14 мая 2011

Вы абсолютно уверены, что не хотите использовать компьютер JRE?В большинстве случаев это предпочтительнее.Вы можете увидеть здесь (и включенную ссылку) некоторых примеров с установщиками, которые проверяют номер JRE и, при необходимости, устанавливают его (глобально).

Если вы действительно предпочитаете включить свою собственную JRE вустановщик и всегда им пользуюсь - что мешает тебе это делать?Дело в том, что ваша основная программная точка каким-то образом определяет местоположение JRE и заставляет его использовать.Это зависит от того, как вы упаковываете / запускаете свою Java-программу.Обычно это возможно, возможно, с помощью простого файла .bat - возможно, будет создано во время установки.

0 голосов
/ 24 мая 2013

launch4j , кажется, предлагает объединить встроенную JRE.

0 голосов
/ 14 мая 2011

Ну, одно чрезвычайно простое решение, которое на самом деле работает довольно неплохо, если вам не нужно получить исполняемый файл, просто использует простой пакетный файл Windows, который запускает флягу, и имеет ярлык к нему, чтобы вы получили на нем предпочитаемый значок. , Для обычного пользователя нет реальной разницы - в конце концов, по умолчанию подавляются известные расширения в Windows (ужасно по умолчанию, но хорошо), а для людей, которые действительно знают, что такое exe, решение должно быть совершенно очевидным.

Таким образом, вы также можете легко запустить включенную Java или лучше, предлагая обе версии, и просто изменить переменную в INI-файле, что на самом деле намного приятнее - никто не хочет или не нуждается в X разных версиях JRE, которые устарели и ничего более чем проблемы безопасности. Тем не менее не может повредить предложить версию, которая включает JRE для людей без установки Java, чтобы сделать его максимально простым для них.

Одним из примеров такого поведения будет weka ..

0 голосов
/ 14 мая 2011

Решение, которое мы использовали (несколько лет назад, но все же я думаю, что лучше).

Найдите программу, которая может сгенерировать exe-файл из jar-файла (Google - ваш друг, я не могу вспомнить название). Обратите внимание, что этот файл .exe все еще будет нуждаться в jre. Это просто умный способ создать исполняемый файл, который содержит ваш файл .jar и который автоматически запускает процесс java. (Это также позволяет вам установить пользовательский значок в вашем файле .exe).

java sdk, который вы используете для разработки / компиляции вашего java-приложения, также содержит папку с именем jre, которая содержит копию jre.

Включите эту папку в программу установки, чтобы папка jre находилась в той же папке, что и файл .exe. Тогда файл .exe будет использовать включенный jre, и jre не будет установлен на компьютер, поэтому вы предотвратите любые проблемы.

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