【问题标题】:jetty cannot start "unable to create the virtual machine" when I add the --exec parameter添加 --exec 参数时,jetty 无法启动“无法创建虚拟机”
【发布时间】:2026-01-29 15:20:15
【问题描述】:

我在使用 Jetty 时遇到了最奇怪的错误。当我尝试启动它时,我得到“无法启动虚拟机”,下一行说“无法识别的选项:-”。

我使用仅包含 java -jar start.jar 的批处理文件启动它,并且我有一个 ini 文件,其中基本上所有内容都被注释掉,只留下 --exec 行。

如果我还评论了 --exec 然后 Jetty 启动,虽然没有 java VM 参数,但我的 web 应用程序非常需要。

最奇怪的是,完全相同的配置在我尝试过的所有其他系统上运行都没有问题。

问题机器基于运行 64 位 JDK 6u29 的 Windows server 2008 R2。

我尝试了几乎所有方法都无济于事,在网上搜索了一段时间,寻找可能再次遇到类似问题但没有结果的人。

你们中的任何人都看到过这个问题吗,或者您对如何解决这个问题有什么建议。


编辑:为此问题在 jetty 的 bugzilla 中输入了 bug

【问题讨论】:

  • 大声笑,是的。我在问它在 java、jetty 和 WS2008 的上下文中意味着什么。还是你的意思是“我被卡住了”?
  • 是的,仅此而已 :-) 陷在泥里,我跌倒了,我不能起来卡住了!
  • 我和你在一起。 :) 但是我已经删除了标签,因为标签用于对问题进行分类,而不是 OP 的当前心态!
  • naaa 一切都好,我想我需要发泄一下

标签: java jetty windows-server-2008-r2


【解决方案1】:

找到问题了……

很简单,因为通往特定码头安装的路径包含一个空格和一个破折号:

c:\toto\titi\server - prod\hereLiesJetty

还必须打开 --exec 选项。如果该选项关闭,一切运行正常,但是您将无法自定义您的 vm 选项。

当通过一个批处理文件启动时,导致 this 失败,该批处理文件使用相对路径来定位 VM,因为它与应用程序打包在一起。

删除路径中的空格完全解决了问题

c:\toto\titi\server-prod\hereLiesJetty

很容易复制,只需获取基本的 jetty -package 并创建一个批处理文件,它类似于 bin 文件夹

光盘.. java -jar start.jar

然后双击它..

砰……世界末日!

该死的......这么近又这么远!对我们来说总是最简单的事情不是吗!

【讨论】:

  • FWIW,您可能已经知道,但是您也可以将路径用引号括起来以绕过它 - 例如“c:\toto\titi\server - prod\hereLiesJetty”
  • yes.... 但是你在我的代码批处理文件、配置中看不到任何地方,否则会出现此路径。它必须由 start.jar 动态提取和使用。这就是我通常处理这种情况的方式,但在这种情况下,我无处引用路径,因为它无处不在。我明天要去 Jetty 错误库和代码库看看我是否无法对此做出正面或反面。如果一切顺利,甚至可能会为他们提供补丁。