在“...”处没有“服务器”JVM

2022-09-01 20:08:20

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

现在,我们在文件树中也有一个jre/目录,这是Java.exe实际所在的位置(我们用Java环境发布我们的产品)。当我使用Java.exe作为启动器时,它位于\jre\jre1.6.0_21\bin中,或者如果我将我制作的副本(称为可执行的“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环境目录中?理想情况下,这将是一个环境变量,因为我需要使用批处理文件使用参数调用此应用程序。


答案 1

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

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

有关详细信息,请参阅官方述文件。


答案 2

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

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

eclipse Screenshot


推荐