24

我正在运行一个我们作为服务器端系统分发的 java 应用程序。我正在尝试编写一个启动器(“写”在这里有点夸大其词,我基本上只是复制 Java.exe 文件,以便我们可以在 Windows 的进程资源管理器中获得所需的名称)。这个 exe 在我们的应用程序文件树的 bin/ 目录中。

现在,我们的文件树中还有一个 jre/ 目录,这是 Java.exe 实际所在的位置(我们将产品与 Java 环境一起发布)。当我使用位于 \jre\jre1.6.0_21\bin 中的 Java.exe 作为启动器时,或者如果我将副本(称为此可执行文件“Orange.exe”)放在此目录中,它工作得很好. 但是,如果我将“Orange.exe”放在 bin\ 目录中,则会出现以下错误:

Error: no 'server' JVM at 'C:\Program Files\Java\jre6\bin\server\jvm.dll'

我想我明白这里发生了什么——我想使用 jvm.dll 文件的服务器版本,它位于我们的 jre 目录中。问题是,我不明白为什么它不在我的应用程序路径中的 jre\jre1.6.0_21 目录中查找。我已将我的 JAVA_HOME 环境变量设置为此位置。似乎它默认为另一个系统范围的预期位置。

有谁知道我可以如何更改它,以便它在我的应用程序提供的 java 环境目录中查找?理想情况下,这将是一个环境变量,因为我需要使用批处理文件使用参数调用此应用程序。

4

8 回答 8

42

有一个小技巧可以让服务器 JVM 启动并运行:

  1. 从 JDK 的 JRE 的 bin 文件夹示例中复制“server”文件夹:C:\Program Files\Java\jdk1.6.0\jre\bin\server
  2. 将“server”文件夹粘贴到 JRE 的 bin 文件夹示例中:C:\Program Files\Java\jre1.6.0\bin
  3. 完毕

详情见官方自述文件

于 2011-11-22T08:48:55.137 回答
9

我刚刚在 Eclipse 中遇到了同样的问题,我注意到正如上面的答案所建议的那样,JBoss网站在这个问题上有一个线程,与上面的答案相同,将文件从 jdk 复制到 jre 文件夹。

我注意到,如果在创建服务器时将运行时定义为 jdk,则可以避免这样做。我没有找到如何编辑现有服务器。

日食截图

于 2012-07-19T13:28:12.340 回答
5

AFAIK,JRE 通常不附带服务器 VM(仅客户端 VM)。如果你真的需要服务器VM,你必须使用JDK安装。

请参阅适用于开发人员的 Oracle Java 下载页面,了解带有服务器 VM 的 JRE。

于 2011-05-09T21:23:34.737 回答
1

我在这里遇到了同样的问题,但就我而言,我只是没有为我最近安装的 JDK 正确更新 JAVA_HOME 和我的 PATH。我刚刚将它更新到我的新 JDK 位置,服务器启动得很好。

于 2014-02-11T18:18:22.963 回答
0

Windows 在 LIBPATH 环境变量中查找 DLL。

并确保您的 1.6.0_21 位于 PATH 中的某个位置。

于 2011-05-09T19:57:28.143 回答
0

我通过将 JAVA_HOME 路径设置为C:\Program Files (x86)\Java\jre1.8.0_131\bin

于 2017-11-29T11:02:29.437 回答
0

最简单的解决方法是简单地将客户端文件夹的内容复制到 bin 中,并将其放入 bin 中新创建的文件夹“server”中。

从 C:\Program Files (x86)\Java\jre1.8.0_261\bin\client 复制粘贴到 C:\Program Files (x86)\Java\jre1.8.0_261\bin\server

*server 是新文件夹

于 2020-10-21T19:55:40.823 回答
-1

当我们尝试运行 servicemix 之类的服务器时,请确保 server/jvm.dll 文件必须存在。

从 JDK 的 JRE 的 bin 文件夹示例中复制“server”文件夹:C:\Program Files\Java\jdk1.6.0\jre\bin\server

将“server”文件夹粘贴到 JRE 的 bin 文件夹示例:C:\Program Files\Java\jre1.6.0\bin

我调整了问题,我经历了上面的问题。这很好。

谢谢!

于 2014-07-04T16:56:27.233 回答