0

我正在通过launch4j-maven插件在exe中构建2个java软件。两个pom.xml中的插件部分是相同的(应用程序名称除外)。
奇怪的是,当我启动第一个 exe 时,lauch4j 做得对:我可以看到 myapps.exe 正在运行,并且在日志中我看到了副本:

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  

但是当我启动第二个时,我看到 javaw.exe 而不是 myapps2.exe 并且在日志中我清楚地看到它没有复制启动器:

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  

这里是工作应用程序的 xml 文件:

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

这是非工作应用程序的 xml

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

我使用相同的 Windows 帐户启动它们,没有权限问题。所以我不知道如何解决这个问题。

我尝试使用 Launch4j.exe 而不是 maven 插件,这是我的配置导出。它仍然不起作用:

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

谢谢

4

2 回答 2

0

要在 launch4J 配置文件中使用自定义进程名称启动您的应用程序,必须编写

<customProcName>true</customProcName>

在您的非工作应用程序配置中,此参数为false. 试着先改变它。

于 2012-08-09T18:22:02.727 回答
0

无法评论 maven 部分,但我已经成功地将 Launch4j 与 Ant 一起使用。查看在构建可执行文件时传递给 launch4j 的 XML 文件。很可能第二个指定 dontWrapJar = true。

或者在 Launch4j GUI 中加载 XML并选中“不包装 JAR”复选框。

于 2012-08-03T16:49:27.040 回答