Tom*_*Tom 17 java windows swing
我们的Java Swing应用程序在Windows上运行,并使用Launch4J包装在exe文件中.
我们想要自定义我们的应用程序进程名称和描述(在Windows的任务管理器中),因为它当前是"javaw.exe"和"Java Platform SE binary"(这对我们的客户来说很困惑).
虽然旧版本的Launch4J可以使用<customProcName>此更改,但此选项现已不存在,因为它不再适用于Win7.
是否有其他(简单)解决方法来自定义我们的应用程序进程名称和描述?
例如,更改javaw.exe可执行文件名似乎是一种方法(因为我们将其嵌入到包装的exe文件中),但是如何指示launch4j jvm文件名更改?
另一个选择可能是创建一个启动器exe文件:可能是一个矫枉过正?
任何想法/提示都非常受欢迎; 谢谢!
如果您正在寻找自己的解决方案,那么您将需要查看JNI和特别是用于创建VM 的Invocation APIJNI_CreateJavaVM(),找到main方法GetStaticMethodID()并使用它来调用它CallStaticVoidMethod.
这是什么java.exe,javaw.exe以及各种其他本地发射器的内部完成.一些例子包括:
如果您不希望将本机构建系统与Java构建系统集成,则一种方法是launcher.exe提前构建静态,并将其视为静态二进制blob.然后在java构建期间,使用java修改二进制blob,以更新VERSIONINFO,图标和启动画面.可以在IntelliJ LauncherGeneratorMain.java中看到此方法的示例
如果您负担得起,JSmooth似乎可以满足您的需求。它最后一次发布是在2007年。有关从应用程序本身获取的许可证的说明:
生成的可执行文件(由JSmooth创建的启动程序)在LGPL下具有类似于gcc许可例外的“运行时例外”:不需要您随其分发源代码,也不需要发布提及jsmooth的通知。
使用JSmooth时,有一个标记为“ Skeleton”的部分,可让您选择一些预定义的参数。其中之一是适用于GUI应用程序的“窗口包装器”,如下所述:
该框架包装了GUI应用程序。
- 没有显示控制台I / O
- 如果未找到Java VM,它将能够显示可配置的URL(通常到Java下载页面)。
可以将参数传递给应用程序(使用JSmooth默认参数机制,或使用参数创建快捷方式)。
此框架中的重要内容是检查“在exe进程中启动java应用程序”选项,该选项导致在与包装exe相同的进程中运行JVM。这意味着Windows任务管理器中仅显示exe,而不是exe和java进程。
另一种方法是编写自己的包装器。有关如何从本机应用程序调用JVM的信息,请参阅此Oracle指南。
| 归档时间: |
|
| 查看次数: |
5696 次 |
| 最近记录: |