简体   繁体   中英

Lauch4j doesn't copy launcher

I am making 2 java software build in exe by the launch4j-maven plugin.The plugins-parts in both pom.xml are the same (except for the apps name).
Strangly when i launch the first exe, lauch4j do it right: i can see myapps.exe running and in the log i see the copy:

Using 64-bit runtime.  
Check launcher: C:\Program Files\Java\jre7\bin\javaw.exe (OK)  
Copy:       C:\Program Files\Java\jre7\bin\javaw.exe -> C:\Program          Files\Java\jre7\launch4j-tmp\NumSyncManager.exe  
Heap -Xms:  5 MB / 0%, Free: 892 MB, Heap size: 5 MB  
Heap -Xmx:  15 MB / 0%, Free: 892 MB, Heap size: 15 MB  
...  
Launcher:   C:\Program Files\Java\jre7\launch4j-tmp\NumSyncManager.exe  
Launcher args:  -Xms5m -Xmx15m -classpath "C:\Program iles\..."   
Args length:    474/32768 chars  
Exit code:  0  

But when i launch the second one, i see javaw.exe instead of myapps2.exe and in the log I clearly see that it doesn't copy the launcher:

Using 64-bit runtime.  
Check launcher: C:\Program Files\Java\jre7\bin\javaw.exe (OK)  
Heap -Xms:  10 MB / 0%, Free: 951 MB, Heap size: 10 MB  
Heap -Xmx:  500 MB / 0%, Free: 951 MB, Heap size: 500 MB  
...  
Launcher:   C:\Program Files\Java\jre7\bin\javaw.exe  
Launcher args:  -Xms10m -Xmx500m -classpath "C:\Program..."  
Args length:    817/32768 chars  
Exit code:  0  

here the xml file of the working apps:

                    <configuration>
                        <headerType>gui</headerType>
                        <outfile>target/${winName}.exe</outfile>
                        <jar>target/${artifactId}-${version}-jar-with-dependencies.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
                        <errTitle>Erreur lors du lancement du logiciel</errTitle>
                        <classPath>
                            <mainClass>fr.core.BootStrap</mainClass>
                        </classPath>
                        <singleInstance>
                            <mutexName>${winName}</mutexName>
                            <windowTitle>${winName}</windowTitle>
                        </singleInstance>
                        <jre>
                            <minVersion>1.6.0</minVersion>
                            <initialHeapSize>50</initialHeapSize>
                            <maxHeapSize>100</maxHeapSize>
                        </jre>
                        <versionInfo>
                            <fileVersion>${version}.0</fileVersion>
                            <txtFileVersion>${version}.0</txtFileVersion>
                            <fileDescription>Tool Manager</fileDescription>
                            <copyright>C</copyright>
                            <productVersion>${version}.0</productVersion>
                            <txtProductVersion>${version}.0</txtProductVersion>
                            <productName>${winName}</productName>
                            <internalName>${winName}</internalName>
                            <originalFilename>${winName}.exe</originalFilename>
                        </versionInfo>
                    </configuration>

And here is the xml of the non-working apps

                       <headerType>gui</headerType>
                        <outfile>target/${winName}.exe</outfile>
                        <jar>target/${artifactId}-${version}-jar-with-dependencies.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
                        <errTitle>Erreur lors du lancement du logiciel</errTitle>
                        <classPath>  
                          <mainClass>fr.boot.BootStrap</mainClass>
                        </classPath>
                        <singleInstance>
                            <mutexName>${winName}</mutexName>
                            <windowTitle>${winName}</windowTitle>
                        </singleInstance>
                        <dontWrapJar>false</dontWrapJar>
                        <customProcName>false</customProcName>
                        <jre>
                            <minVersion>1.6.0</minVersion>
                            <initialHeapSize>10</initialHeapSize>
                            <maxHeapSize>500</maxHeapSize>
                        </jre>
                        <versionInfo>
                            <fileVersion>${winVersion}.0</fileVersion>
                            <txtFileVersion>${winVersion}.0</txtFileVersion>
                            <fileDescription>Tool</fileDescription>
                            <copyright>c</copyright>
                            <productVersion>${winVersion}.0</productVersion>
                            <txtProductVersion>${winVersion}.0</txtProductVersion>
                            <productName>${winName}</productName>
                            <internalName>${winName}</internalName>
                            <originalFilename>${winName}.exe</originalFilename>
                        </versionInfo>
                    </configuration>

I launch them using the same Windows account, there is no rights problem. So i dont know how to solve this.

I have tried to use Launch4j.exe instead of maven plugin here is my export of configuration. Its still doesn't work:

<launch4jConfig>
  <dontWrapJar>false</dontWrapJar>
  <headerType>gui</headerType>
  <jar>C:\apps-0.0.1-jar-with-dependencies.jar</jar>
  <outfile>C:\apps.exe</outfile>
  <errTitle></errTitle>
  <cmdLine></cmdLine>
  <chdir></chdir>
  <priority>normal</priority>
  <downloadUrl>http://java.com/download</downloadUrl>
  <supportUrl></supportUrl>
  <customProcName>false</customProcName>
  <stayAlive>false</stayAlive>
  <manifest></manifest>
  <icon></icon>
  <singleInstance>
    <mutexName>apps</mutexName>
    <windowTitle>apps</windowTitle>
  </singleInstance>
  <classPath>
    <mainClass>fr.core.BootStrap</mainClass>
    <cp>fr.core.BootStrap</cp>
  </classPath>
  <jre>
    <path></path>
    <minVersion>1.6.0</minVersion>
    <maxVersion></maxVersion>
    <jdkPreference>preferJre</jdkPreference>
    <opt>-Denv.java.home=&quot;%JAVA_HOME%&quot;</opt>
  </jre>
  <versionInfo>
    <fileVersion>1.0.0.0</fileVersion>
    <txtFileVersion>1.0.0.0</txtFileVersion>
    <fileDescription>desc</fileDescription>
    <copyright>e</copyright>
    <productVersion>1.0.0.0</productVersion>
    <txtProductVersion>1.0.0.0</txtProductVersion>
    <productName>apps.exe</productName>
    <companyName>appsComp</companyName>
    <internalName>apps</internalName>
    <originalFilename>apps.exe</originalFilename>
  </versionInfo>
</launch4jConfig>

Thanks

Can't comment on the maven part, but I have sucessfully used Launch4j with Ant. Take a look at the XML files that are passed to launch4j when building the executable. Most likely the second one specifies dontWrapJar = true.

Alternately load the XML in Launch4j GUI and check that checkbox "Don't wrap the JAR" is not checked.

To launch your app with custom process name in launch4J config file must be written

<customProcName>true</customProcName>

In your non-working app config this parameter is false . Try to change it first.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM