Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上设置Java进程名_Java_Windows_Swing - Fatal编程技术网

在Windows上设置Java进程名

在Windows上设置Java进程名,java,windows,swing,Java,Windows,Swing,我们的Java Swing应用程序在Windows上运行,并使用Launch4J封装在exe文件中 我们想定制我们的应用程序进程名称和描述(在Windows的任务管理器中),因为它目前是“javaw.exe”和“Java平台SE二进制”(这让我们的客户感到困惑) 虽然较旧版本的Launch4J启用了使用更改此选项,但此选项现在已失效,因为它从Win7起不再工作 是否有其他(简单的)解决方法来定制我们的应用程序进程名称和描述 例如,更改javaw.exe可执行文件名似乎是一种方法(因为我们将其嵌入

我们的Java Swing应用程序在Windows上运行,并使用Launch4J封装在exe文件中

我们想定制我们的应用程序进程名称和描述(在Windows的任务管理器中),因为它目前是“javaw.exe”和“Java平台SE二进制”(这让我们的客户感到困惑)

虽然较旧版本的Launch4J启用了使用
更改此选项,但此选项现在已失效,因为它从Win7起不再工作

是否有其他(简单的)解决方法来定制我们的应用程序进程名称和描述

例如,更改javaw.exe可执行文件名似乎是一种方法(因为我们将其嵌入到包装的exe文件中),但如何指示启动4j jvm文件名已更改

另一个选择是创建一个启动器exe文件:可能是一个过度杀戮

任何想法/提示都是非常受欢迎的;谢谢

如果你能负担得起,似乎做你需要的事。但它最后一次发布是在2007年。有关其许可证的说明摘自应用程序本身:

生成的可执行文件(JSmooth创建的启动器)位于LGPL下,具有类似于gcc许可证例外的“运行时异常”:不要求您分发源代码,也不需要发布提及JSmooth的通知

使用JSmooth时,有一个标记为“骨架”的部分,允许您选择一些预定义的参数。其中之一是“窗口包装器”,适用于如下所述的GUI应用程序:

此框架包装了GUI应用程序

  • 不显示控制台I/O
  • 如果没有找到Java虚拟机,它可以显示一个可配置的URL(通常指向Java下载页面)
可以将参数传递给应用程序(使用JSmooth默认参数机制,或者使用参数创建快捷方式)

此框架中的重要内容是选中“在exe进程中启动java应用程序”选项,这将导致在与包装器exe相同的进程中运行JVM。这意味着Windows任务管理器中只显示exe,而不是exe和java进程

另一种方法是编写自己的包装器。有关如何从本机应用程序调用JVM的信息,请参阅。

就我记忆所及,我使用过类似的方法,因为它是CPL许可的,所以可以在商业上使用。今天选中此项:设置进程名称在Windows 7上仍然有效(最初在XP上执行此操作)

根据该网站,您只需创建一个ini文件,告诉WinRun4J要运行什么:

main.class=org.something.MyMainClass
classpath.1=*.jar
(还有更多参数,您可以设置在何处可以找到JRE等)

在第二步中,将winrun4j.exe复制到适合您的应用程序的位置:

copy winrun4j.exe yourapplication.exe
(也有适用于Windows x64的版本)

然后您有了RCEDIT(WinRun4j附带)将ini添加到exe:

rcedit /N yourapplication.exe yourapplication.ini

这看起来很旧,不值得付出努力,但它也可能是您所寻找的:。

如果您希望推出自己的解决方案,您将需要查看JNI,特别是用于创建VM的
JNI\u CreateJavaVM()
,找到main方法
GetStaticMethodID()
并使用
CallStaticVoidMethod
调用它

这就是
java.exe
javaw.exe
和其他各种本机启动器在内部所做的。一些例子包括:


如果您不想将本机构建系统与java构建系统集成,一种方法是预先构建一个静态
launcher.exe
,并将其视为静态二进制blob。然后在java构建过程中,使用java修改二进制blob,以更新、图标和初始屏幕。这种方法的一个例子可以在

和中看到。欢迎使用stackoverflow。我修复了你答案中的链接,也许你可以看看这个:@JörnHees谢谢。熟悉语法;发布多个链接需要声誉,这是其他帐户所没有的。