使用JNI时如何设置`jps`显示的main class?

How to set main class displayed by `jps` when using JNI?

在通过 JNI 启动 Java 进程时,如何设置 jps 或 JConsole 显示的主要 class 名称?

在 C 中,我得到一个 class 和 main 方法,如下所示:

jclass main_class = (*env)->FindClass(env, java_main_class);
...
jmethodID main_method = (*env)->GetStaticMethodID(env, main_class, "main", "([Ljava/lang/String;)V");

然后像这样开始 Java:

(*env)->CallStaticVoidMethod(env, main_class, main_method, main_args);

我的进程运行良好,但是当我 运行 jps 时,我没有看到 Main class。例如:

$ jps -l
30056 
30065 sun.tools.jps.Jps

我在 JConsole 中查找进程时也看到了一个空字符串。

但是,我确实看到我的参数 jps:

$ jps -lv
30068  -Dfile.encoding=UTF-8 -Xmx500m ...
30070 sun.tools.jps.Jps -Dapplication.home=

设置系统属性sun.java.command

例如:-Dsun.java.command=com.example.Main

我通过搜索与 JDK 一起分发的 source code for the java executable 找到了这个。