У меня на компьютере установлены Launch4j и JDK, и я пытаюсь конвертировать jar-файл в exe. Когда я запускаю Launch4j, я получаю следующую ошибку:
Для этого приложения требуется Java Среда выполнения 1.6.0
Как это исправить? Какова стратегия поиска Launch4j для поиска установленных jres / jdks?
Версия JDK:
java -version
Вывод:
java версия "14" 2020 -03-17 Java (TM) SE Runtime Environment (сборка 14 + 36-1461) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 14 + 36-1461, смешанный режим, совместное использование)
У меня есть JDK-путь в обеих переменных PATH и JAVA_HOME. Я попытался удалить JDK и установить JRE, но сначала мне нужно скомпилировать файлы *. java в * .class с помощью команды javac. Так что в этом случае у меня есть разные версии JDK и JRE.
Официальная документация гласит:
Launch4j требует файл конфигурации xml для каждого вывода исполняемый файл.
Так что я могу использовать тег jre с атрибутом jdkPreference , чтобы указать предпочтение для publi c JRE или частной среды выполнения JDK в конфигурации файл. Но как я могу добавить это для сборки. xml файл?
build. xml:
<project name="launch4j" default="compile" basedir=".">
<property name="src" location="src" />
<property name="lib" location="lib" />
<property name="build" location="build" />
<property name="jar" location="./${ant.project.name}.jar" />
<property name="launch4j.dir" location="." />
<property name="maven" location="maven" />
<path id="dist.classpath">
<pathelement path="${build}" />
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="init">
<tstamp />
<mkdir dir="${build}" />
</target>
<target name="compile" depends="init" description="compile the source">
<javac srcdir="${src}" destdir="${build}" classpathref="dist.classpath" source="1.6" debug="on" includeantruntime="false" />
<copy todir="${build}/images">
<fileset dir="${src}/images">
<include name="**/*" />
</fileset>
</copy>
<copy todir="${build}">
<fileset dir="${src}">
<include name="**/*.properties" />
</fileset>
</copy>
</target>
<target name="jar" depends="compile" description="create jar">
<fileset dir="${lib}" id="lib.dist.fileset">
<include name="**/*.jar" />
</fileset>
<pathconvert pathsep=" " property="dist.classpath" refid="lib.dist.fileset">
<map from="${lib}" to="./lib" />
</pathconvert>
<!-- Put everything in ${build} into a jar file -->
<jar jarfile="${jar}">
<fileset dir="${build}" excludes="**/messages_es.properties" />
<manifest>
<attribute name="Main-Class" value="net.sf.launch4j.Main" />
<attribute name="Class-Path" value=". ${dist.classpath}" />
</manifest>
</jar>
</target>
<target name="demo" depends="jar" description="build the demos">
<ant dir="./demo/ConsoleApp" inheritAll="false" />
<ant dir="./demo/SimpleApp" inheritAll="false" />
</target>
<target name="clean" description="clean up">
<delete dir="${build}" />
<delete file="${jar}" />
<ant dir="./demo/ConsoleApp" target="clean" inheritAll="false" />
<ant dir="./demo/SimpleApp" target="clean" inheritAll="false" />
</target>
<target name="switch-to-maven" description="switch project to maven">
<copy todir="." overwrite="true">
<fileset dir="${maven}">
<include name="**/*" />
</fileset>
</copy>
<delete dir="${lib}" />
<mkdir dir="./target" />
</target>
</project>
Спасибо