我正在使用Launch4J来启动我的Java应用程序,如果系统上存在x64 JRE,则Launch4J似乎更喜欢它.
不幸的是我的应用程序无法在64位JVM上运行,因为我正在加载32位DLL,这是不可能的,并导致UnsatisfiedLinkError.
有没有办法强制/欺骗Launch4J只使用32位JVM?
如何使用JRE分发我的应用程序jar?我通过使用在exe中创建我的可执行jar launch4j.
我的应用程序是基于桌面的swing应用程序.我想让它像一个应用程序,如果用户没有安装JRE,他们可以使用嵌入式JRE来使用它.我给JRE提供了应用程序并使用它.卸载应用程序和JRE将像游戏一样卸载.
我知道如果我将预安装的JRE与我的应用程序一起提供,它就会发生.我也看到了JRE标签launch4j,但我不明白我会给出哪条路径.我也看到了这个链接,但没有给出明确定义总程序的程序或有用的链接.
请给出一些明确的答案.如果您的回答是基于,我会更喜欢launch4j.
我目前正在尝试将Java应用程序固定到Windows 7任务栏.该应用程序是使用Launch4j启动的.程序图标显示正确,但右键单击任务栏上的图标仅显示带有"关闭窗口"条目的上下文菜单.没有用于将应用程序固定到任务栏的菜单项.将EXE文件拖到任务栏也无法正常工作.在任务栏中单击此新启动器时,第二个图标会在任务栏中生成.
我按照这两个问题的解决方案的指示来解决问题,但它没有帮助:
来自第二个问题/解决方案的JNA内容编译并且不会抛出任何异常.我可以在设置后阅读应用程序ID.但我仍然无法将应用程序固定到任务栏.
我在Github上创建了一个小测试应用程序来演示这个问题:
https://github.com/kayahr/launch4jtest
该应用程序使用Maven作为构建系统.只需运行mvn package,您就会在目标目录中找到一个ZIP文件,其中包含设置此应用程序ID所需的EXE文件和jna.jar.将此ZIP解压缩到某个目录,双击EXE并尝试将应用程序固定到任务栏,您将看到问题.
那么这个应用程序有什么问题?
我正在使用launch4j在我的Windows应用程序中包装一个可执行jar文件,但是我需要通过JVM参数传递对它的一些库的引用.有问题的库驻留在应用程序安装目录中,并且始终位于相对于可执行文件的相同位置.
我想告诉launch4j在JVM选项中使用可执行相对路径.我知道这些信息可以在Windows批处理脚本级别获得,但是如何配置launch4j来获取它?
编辑以澄清:我正在寻找如何使路径相对于二进制本身,而不是如何使它们相对于当前工作目录.两者不一定相同.
我有一个适用于 Windows 的可执行应用程序 setup.exe,我使用基于 Java 的 Launch4j/Inno Setup 实现。
我经常发布新版本和错误修复。
我想知道是否有自动安装更新的机制?
我在U:/ myproject中创建了我的项目,其中所有的Java东西都安装在C:Drive中.我通过netbeans创建的jar文件位于u:/myproject/dist/myproject.jar中.可能有人给我提供了如何设置launch4j的清晰说明,我是否必须先创建一个.exe文件?
或者,如果我只是签署jar文件,我会得到这个错误
output.exe is not a valid win32 application
Run Code Online (Sandbox Code Playgroud) 在Linux上运行,我使用launch4j打包一个exe.
我将exe复制到我的Windows 7 VM中,然后运行它.
没有任何反应.
我用--l4j-debug运行它,没有任何事情发生(至少,如果有一个日志文件,我找不到它).
我在这里缺少一些诊断技术吗?
我们有一个使用Launch4j创建windows .exe的java应用程序.我们使用org.bluestemsoftware.open.maven.plugin来实现这一点,这非常有用.不过我有一个询问.最近我添加了cmd行功能,发现使用GUI头时从.exe运行时没有传递参数.好的,这是有道理的.
使用控制台标头按预期工作(传递参数).但是,现在当我们在GUI模式下运行时,我在后台获取命令窗口,没有漂亮的启动画面,并且我的窗口名称丢失了.同样,这是有道理的,它现在是一个CONSOLE标题.但我需要两种功能.
有没有办法在一个.exe中支持BOTH标头?
我知道launch4j没有捆绑JRE,.exe但你必须把它放在旁边.我的问题是,我该怎么做?有没有办法让maven自动定位和复制我用来构建我的应用程序并将其复制到给定目录的JDK的JRE?
我尝试过这样的事情:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/windows/jre</outputDirectory>
<resources>
<resource>
<directory>${java.home}</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但程序没有启动.它显示了一个立即消失的小对话框(它似乎是空白的,但它让我真的注意到它太快了).
假设我有三个 Java 应用程序;A和B是 32 位,C是 64 位。所有这些都配置了
maxHeapPercent = 50
maxHeapSize = 1024
Run Code Online (Sandbox Code Playgroud)
根据文档,它读取“50% 的可用内存不少于 1024 MB” 。现在我的问题是,如果我在同一台机器上运行这些应用程序会发生什么?
A和B(作为 32 位应用程序!)每个只允许 4GB,使用 2GB?最终达到 2x2GB+1x8GB=12GB?还是 2x4GB+1x8GB=16GB,操作系统什么都没有?OutOfMemoryError? 或者它只会强制交换?