Pourquoi Launch4j ne trouve pas JDK installé?


J'ai Launch4j et JDK installés sur mon ordinateur et j'essaie de convertir le fichier jar en exe. Lorsque je démarre Launch4j, j'obtiens l'erreur suivante:

Cette application nécessite un environnement d'exécution Java 1.6.0

Comment puis-je résoudre ce problème? Quelle est la stratégie de recherche Launch4j pour trouver des jres/jdk installés?

Version du JDK:

java -version

Sortie:

Java version " 14 " 2020-03-17 Java(TM) SE Runtime Environment (build 14 + 36-1461) Java HotSpot(TM) Machine virtuelle serveur 64 bits (build 14 + 36-1461, mixte mode, partage)

J'ai JDK-path dans les deux variables PATH et JAVA_HOME. J'ai essayé de désinstaller le JDK et d'installer JRE, mais je dois d'abord compiler *.java à *.fichiers de classe avec la commande javac. Donc, dans ce cas, j'ai différentes versions de JDK et JRE.

Le la documentation officielle dit:

Launch4j nécessite un fichier de configuration xml pour chaque sortie exécutable.

Je peux donc utiliser la balise jreavec l'attribut jdkPreference pour spécifier une préférence pour un runtime JRE public ou JDK privé dans le fichier de configuration. Mais comment puis-je ajouter ceci pour construire.fichier xml?

Construire.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>

Merci

Author: djb, 2020-03-23

2 answers

Launch4j semble être limité avec les nouvelles versions de java... Dans la dernière mise à jour, ils affichent des informations détaillées sur la jvm prise en charge, la dernière est 1.8.9 et il y a un ticket sur la conformité avec java 9 et versions ultérieures... changelog et les billets launch4j

Launch4j popup avec message

 0
Author: AndreaTaroni86, 2020-09-14 09:56:45

Au lieu de démarrer le launch4j.exe en tant qu'exécutable Windows, vous pouvez démarrer le launch4.pot avec votre jdk. Par conséquent, marquez le launch4j.jar dans l'explorateur de fichiers, faites un clic droit, choisissez Ouvrir avec et référencez votre jdk installé, par exemple Open JDK platform binary

 0
Author: Georg.Haupt, 2020-11-16 09:36:47