【问题标题】:Failed to find library: jvm.dll. What's going on here?找不到库:jvm.dll。这里发生了什么?
【发布时间】:2018-03-23 17:54:01
【问题描述】:

在安装了我的应用程序的某些计算机(但不是所有计算机)中,在看似成功安装之后,当您尝试运行它时,它会显示以下错误:

该文件存在于该目录中,因此,我不确定为什么它说找不到库。

该错误之后是

最后:

然后什么都没有发生。应用程序没有启动。有什么想法吗?

有些人指出这个错误报告似乎在谈论这个问题:https://bugs.openjdk.java.net/browse/JDK-8191176 但我已经使用 8u162 和 8u172 构建了我的应用程序(早期访问,特别是 jdk-8u172-ea-bin-b03- windows-x64-18_jan_2018),结果是一样的。它发生在 Windows 10 Pro 1703 和 1709 上。

我不确定还有什么相关的。

【问题讨论】:

  • “但我在 64 位计算机、64 位 Windows 和 64 位版本的应用程序中看到了完全相同的错误。” 任何人都安装了 32 位 Java机会?如果可能,配置安装程序以检测机器上 JAVA_HOME 中的 Java 位数,然后决定安装哪个版本的应用程序。
  • JVM 特定的?您是否检查过它是否仅发生在 Oracle one 或 OpenJDK 上?
  • 您能否查看Administrative Tools中的Event Logs,看看您是否找到与此相关的信息?
  • 有趣的是它无法找到 bin\server\jvm.dllbin\client\jvm.dll。在每种情况下,是否有另一个?如果是这样,一种可能性是 JVM 正在尝试自动检测机器是否为“服务器类”。这通常基于CPU count 完成。

标签: java javapackager


【解决方案1】:

可能是您受到JDK-8191176 : JavaFX Self-Contained Application fails with error "Failed to find library: jvm.dll" 的影响,它影响了 8u151 并在 8u162 中修复。

在具有各自 JDK 版本的 Windows 10 Enterprise build 1709 上再次验证,并且可以确认报告的问题。如使用 JDK 8u151/8u152 检查时所述,弹出“找不到库:jvm.dll”和随后的错误对话框。

也许您可以检查使用 8u162 或更高版本运行时会发生什么。

【讨论】:

  • 我将重复检查以防万一我搞混了,但据我所知,这是使用 JDK 8u162 构建的二进制文件。
  • 我有类似的东西,在客户端和构建之间只有一个小的 Java 版本,只是为了仔细检查你能不能用相同的 Java 版本构建它来检查它是否是一个 jdk 问题?
  • @Karol:我刚刚用 64 位的 Java 1.8.0_162 重建了它,它导致了同样的问题。所以解决的不是 8u152 问题。至少不适合我。
  • @Paizo:和什么Java版本一样?
  • 假设客户端的版本为 1.8.0_123 尝试使用相同版本构建应用程序仍然会出现问题?
【解决方案2】:

这是有点错误的错误信息,实际上意味着一些依赖.dll 没有找到。 jvm.dll 的依赖项之一不是 jvm.dll 本身。

来自https://bugs.openjdk.java.net/browse/JDK-8191176

对于任何寻求解决方案的人,我从 Java 中提取了“msvcr100.dll”并将其添加到我的应用程序源中。在构建我的 JavaFX 项目(使用 InnoSetup)时使用 JavaPackager 时,我只需在 setup.iss 脚本中添加这些行,以便将文件放在 application.exe 旁边:

[Files] 
Source: "YOUR_APPLICATION\app\msvcr100.dll"; 
DestDir: "{app}"; 
Flags: ignoreversion 

【讨论】:

  • 只是为了确认一下,您在源代码仓库中添加了一个二进制 dll 吗?无论如何,我没有使用 InnoSetup。这是为了将应用程序打包为 exe,而不是 msi,对吗?
  • 不,这都是关于本机库,而不是源代码。您需要将 msvcr100.dll 放在生成的 .exe 文件附近。
  • 你从哪里获取 msvcr100.dll?
  • 来自 JDK 安装中的“bin”文件夹
  • 好的。下一个问题是如何将它放在 .exe 附近。 javafxpackager 在一次操作中生成所有 exe 并将它们打包到 MSI 中。
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多