Как связать JRE с Launch4j?


80

У меня на компьютере стоит Launch4J, и это отличная программа. Одна из его функций, которые меня интересуют, - это возможность объединить JRE в общий файл .EXE. Однако я не могу найти никакой документации, описывающей, как это сделать.

Как связать JRE с EXE? Кроме того, где мне взять компактную портативную JRE для запуска? Ссылки для загрузки в Oracle предназначены для пакетов установки.


5
Launch4j позволяет связать JRE с вашим exe-файлом, поэтому вместе с ним. Вы не можете использовать его для встраивания JRE в исполняемый файл.
THelper

Что это вообще значит ...
DKIT

Ответы:


82

После некоторых попыток я наконец получил обходной путь, чтобы связать jre в моем приложении:

Я упаковываю свое приложение в виде zip-файла со следующими папками внутри:

containerFolder
|- jre
      |-bin (in bin there is java.exe)
      |-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)

В xml файле launch4j я настраиваю jre следующим образом:

<jre>
    <path>../jre</path>
    <opt>-DgvSIG.confDir=../cfg</opt>
</jre>

Уловка здесь в том, что это не путь к файлу java.exe. Путь к jre зависит от положения .exe, и он должен указывать на одну папку перед файлом java.exe.

Папка jre, которую я использую, - это просто копия и вставка из папки jre, установленной в системе Windows.


4
Это мне очень помогло! В документации об этом не очень ясно ... Работает как шарм :-)
Конрад 'ktoso' Малавский

Привет, что это за путь <path> ../jre </path>, либо это существующий путь, который находится в папке C: //..java, либо загруженный новый установщик java JRE.
RajaReddy PolamReddy

@RajaReddyPolamReddy - это относительный путь от вашего .exe файла к папке, где jre находится внутри вашего приложения
Франсиско Пуга,

9
Был задан вопрос, как связать JRE в EXE с launch4j. В этом ответе показано, как указать launch4j использовать конкретную JRE, которую вы связали со своим EXE, но не внутри нее. Кажется, это лучшее, что можно сделать с помощью launch4j. (Другой ответ ниже показывает один из способов создания установщика, который затем установит как ваш EXE, так и JRE, но JRE не будет в EXE.)
Enwired

1
А как насчет JDK11, который не поставляется с JRE?
Panagiss

12

Я сделал следующее, и у меня это сработало, используя версию Launch4j 3.11:

  1. Создал новую папку для своего приложения (например, MyApp).
  2. Скопировал файл jar из папки dist проекта java в MyApp вместе с папкой lib.
  3. Создал папку с именем jre в папке моего приложения MyApp, поэтому теперь папка MyApp содержит:
    • MyApp.jar
    • lib <- в нем есть библиотеки, необходимые моему java-приложению.
    • jre
  4. Скопировал папки bin и lib из папки java jre (C: \ Program Files (x86) \ Java \ jre7) в MyApp \ jre
  5. В Launch4j, установив все необходимые параметры, установите путь Bundled JRE на "jre"

    Параметры Launch4j JRE

  6. Убедитесь, что в параметрах поиска выбрано «Использовать только частные среды выполнения JDK».

6

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

  1. Копирование libи binпапки из вашей JRE папки в папку Dist проекта

преобразование jar в exe

  1. откройте launch4j и введите следующую настройку. введите описание изображения здесь

Хитрость в том, что вам нужно указать полный путь к javaw.exe.

Наслаждаться!!!!


1
Поместите любой файл в папку dist, из-за которой во время очистки и сборки возникает эта ошибка: Невозможно удалить файл ...
ParisaN

0

Я только что это сделал. Выше четко описан метод комплектации jre.

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

launch4j, bin / jre, ресурсы / bin / jre.

launch4j, bin и ресурсы находятся на одном уровне.


0

Рабочий пример использования Launch4J для объединения приложения Java с определенной JRE можно найти по адресу https://github.com/vZome/vzome/blob/master/desktop/platform/windows/README.md . Данный дистрибутив сконфигурирован для требуют vZome использовать в комплекте JRE , а не какой - либо JRE найти на целевой платформе.

Надеюсь это поможет.


-2

JRE обычно находится в папке SDK. Да, ссылки в Интернете - это установщики, но после установки JRE теперь находится на вашем локальном диске. Шахта находится в

${jdk folder}\jre

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


Как связать его с EXE? Я пытаюсь упаковать все в банку, чтобы мне не приходилось беспокоиться, если у пользователя установлена ​​Java. Я понимаю, что лучше всего просто попросить их загрузить java; однако я бы хотел поэкспериментировать со всеми вариантами развертывания.
CodeBunny

3
@CodeBunny Это невозможно только с Launch4j, но кто-то нашел другое хорошее решение: mark.koli.ch/…
Zero3 04
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.