4


我有 Tomcat 7 作为服务在 win 7 服务器上运行一年多,没有任何问题
服务器有足够的硬盘或内存,
今天服务器关闭,试图启动它我收到错误:

2012-06-13 15:15:22 
Commons Daemon procrun stdout initialized
Error occurred during initialization of VM
Unable to load native library: Can't find dependent libraries


我将服务属性的 java 选项卡上的 vm 参数从:
C:\Program Files\Java\jre6\bin\client\jvm.dll
切换到:
C:\Program Files\Java\jdk1.6.0_23\jre\bin\client\jvm.dll


现在它似乎工作正常。
突然出现此错误的原因可能是什么?
谢谢

4

3 回答 3

4

我将 JRE 重新安装到版本6u25并且 Tomcat 能够重新启动。

我想一定有什么东西弄乱了 JRE 的依赖关系。服务器上最近的唯一安装是几天前。在那之前,它自年初以来就没有改变过。我在这里列出了最近的安装以供参考,但我并不声称知道它们是问题的原因:

  • Microsoft SQL Server 2008 R2 管理对象 (x64)
  • Microsoft Web 平台安装程序 3.0
  • Microsoft SQL Server 系统 CLR 类型 (x64)
  • 微软网络部署 2.0
  • 谷歌浏览器
于 2012-06-14T14:31:07.367 回答
2

I just had this problem occur after allowing the automatic update to Java JRE 7u15. After checking all the obvious and the Tomcat settings, I noticed that the files in the JRE bin folder did not have any with names after 'm'. So, I uninstalled the Java JRE and did a fresh install. Tomcat started without any problem. Thus, in my case it appears the culprit was a bad update even though it said it installed everything fine.

于 2013-02-21T21:08:57.533 回答
2

AFAIK,

Windows 上的 Sun/Oracle Java 6 SDK 安装程序会在其 JDK 文件夹中安装另一个 JRE。

显然,在您的服务器的“正常”JRE 安装中“发生”了一些事情,可能是更新失败,或者有人卸载了似乎是 JRE 的冗余副本。

JRE 安装程序存在/曾经存在一个已知问题:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7114143

有两种不同的 JVM,即“客户端”虚拟机和“服务器”虚拟机,在某些系统上,您只能找到服务器或客户端 vm 版本,而在某些系统上两者都有。

C:\Program Files\Java\jre6\bin\client\jvm.dll 和/或 C:\Program Files\Java\jre6\bin\server\jvm.dll

Java 6 在 Windows 上的预期行为是始终安装客户端 jvm:

http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html

http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#compiler_types

于 2012-10-10T09:05:26.360 回答