Как настроить install4j для запуска исполняемого jar-файла java, который содержит другие jar-файлы?
У меня есть java исполняемый файл JAR, в который встроено много других файлов JAR. Для этого он использует simon tuffs onejar. JAR-файл работает правильно, когда я дважды щелкаю по нему или запускаю 'java -jar myApp.jar' из командной строки. В jar-файле есть файл manifest.mf, содержащий:
Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Expand: expand,doc
Install4j правильно копирует этот jar-файл в папку bin, но "myApp.exe", который он создает, не запускается. Я получил:
java.lang.ClassNotFoundException: com.ndi.foreCee.programs.MyApp
или же:
java.lang.ClassNotFoundException: com.simontuffs.onejar.Boot
в зависимости от того, что я подключаю к странице настройки Java в Install4j 'Основной класс'. Я установил для параметра "Путь к классу" значение "Archive bin \ myApp.jar".
Может кто-нибудь сказать, как настроить install4j для создания исполняемого файла, который просто выдает 'java -jar myApp.jar', используя встроенный jre?
3 ответа
Добавьте действие "Запуск исполняемого или пакетного файла" на "Экран установки" и установите следующие свойства:
Свойство "Исполняемый": ${installer:sys.javaHome}/bin/java
Свойство "Аргументы": -jar; filename.jar (в редакторе по одному аргументу в строке)
Install4j: как выполнить командную строку java -jar filename.jar в конце установки
Может кто-нибудь сказать, как настроить install4j для создания исполняемого файла, который просто> выдает 'java -jar myApp.jar', используя встроенный jre?
Панель запуска, сгенерированная install4j, не выполняется java
вообще, он использует JNI для создания JVM.
Вы можете запустить исполняемый файл из командной строки с параметром /create-i4j-log
чтобы получить файл журнала, который показывает параметры, которые передаются в JVM.
Я решил свою проблему, обновив сборку ant и удалив simon tuffs one-jar и заменив его следующим образом: как описано в разделе Включение внешних jar-файлов в новую сборку jar-файла с Ant. После этого лаунчер Install4J работал, как рекламировалось (и, как описано в M2E67).