5

背景:从 Java 9 开始,可以使用jlink创建自定义运行时映像(JRE+程序)。

可以使用prunsrv.exeApache Commons Daemon的一部分)将 Java 程序安装为 Windows 服务。

prunsrv可用于三种启动模式:javajvmexe

我设法使用exe模式启动自定义运行时映像,并使用jvm模式启动传统 Java 程序(类路径 + 普通 JDK),但我无法使用jvm模式(不会启动新进程)与图像.

prunsrv有一个“ JvmOptions9 ”参数,这可能暗示可能支持这种情况,但我不确定。

4

1 回答 1

1

我一开始也有同样的问题,但设法解决了。虽然这是一个老问题,但这是我在搜索时发现的第一个问题,所以我会为其他人提供我的答案。

我可以毫无问题地安装该服务,但是当我尝试在 jvm 模式下启动它时,它会失败并抱怨“%1 不是有效的 Win32 应用程序”。这里的关键字是Win32。

prunsrv 可执行文件有两种版本:一种在安装目录中,另一种在 amd64 子目录中。安装目录下的版本只支持32位,amd64的版本是64位的。prunsrv 和 Java 版本必须都是 32 位或 64 位;我试图从 32 位 prunsrv 服务启动 64 位 Java VM。

换句话说,确保使用了目标 Java VM 的正确版本的 prunsrv。有了它,我可以毫无问题地运行带有精简运行时映像的模块化 Java 9(或实际上是 12)应用程序。

于 2020-01-20T11:21:26.503 回答