Как связать Java с моим приложением Windows?

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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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