没有在“...”处找到“服务器”JVM。

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环境目录吗?理想情况下,这将是一个环境变量,因为我需要使用批处理文件调用此应用程序并传递参数。

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. 完成

详见官方读我


10
这有点奇怪——我难道真的需要手动复制一些随_JDK_一起提供的文件才能让我的生产_JRE_正常工作吗?是否有更“官方”的解决方案? - bacar
3
有一个解决方案可以避免这个问题。请查看这个答案 https://dev59.com/p2025IYBdhLWcg3wjGpO#11561914 - Codey McCodeface
这似乎是原因:http://www.java.net/node/645054 因此显然是为了限制JRE下载大小... - Emmanuel Touzery

9
我刚在Eclipse中遇到了同样的问题,我注意到正如上面的答案所建议的,JBoss网站有一个关于此问题的帖子,与上述答案相同,建议将文件从jdk复制到jre文件夹中。
我发现,如果您在创建服务器时将运行时定义为jdk,则可以避免必须执行此操作。不过我没有找到如何编辑现有服务器的方法。 eclipse Screenshot

1
我做了这件事,并确保JBoss Dev Studio和JBoss AS安装在同一个目录下,例如都在Windows 7的C:\User\username下。我还在JBoss Dev Studio重新安装过程中特别指定了jre6(而不是jre7,因为我担心稳定性),问题迎刃而解。 - Fuzzy Analysis

5
据我所知,JRE通常不会随附服务器VM(仅客户端VM)。如果您确实需要服务器VM,则必须使用JDK安装程序。
请参阅Oracle Java for Developers Download页面以获取带有服务器VM的JRE。

我们应用程序路径中的Java环境包括JDK中的server/目录。 - jwir3
1
你说JRE通常不会附带服务器VM。有没有包含它的安装程序? - bacar

1

我在这里也遇到了同样的问题,但我的情况是我没有正确更新JAVA_HOME和PATH,以适应我最近安装的JDK。我只需将其更新为新的JDK位置,服务器就可以正常启动。


0

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

同时确保你的1.6.0_21版本在PATH路径中排在前面。


啊,是的,抱歉 - 我没有提到这一点。我已经验证了PATH变量,将应用程序的jre目录作为路径中的第一个元素。 - jwir3
如果我设置LIBPATH=<APP_HOME>\jre\jre1.6.0_21\bin,那么这将正确地搜索此服务器的jvm dll吗? - jwir3

0

最简单的解决方法是将client文件夹中的内容复制到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是新建的文件夹


0

我通过将JAVA_HOME路径设置为C:\Program Files (x86)\Java\jre1.8.0_131\bin解决了相同的问题。


-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

我之前遇到了问题,但是通过上述步骤解决了。现在一切正常。

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接