【问题标题】:Failed to locate method JNI_GetCreatedJavaVMs in the libjvm.dylib (Mac OS)无法在 libjvm.dylib (Mac OS) 中找到方法 JNI_GetCreatedJavaVMs
【发布时间】:2011-10-30 10:20:33
【问题描述】:

我正在尝试在我的程序中嵌入 java 虚拟机,但我的 libjvm.dylib 缺少 JNI_GetCreatedJavaVMs。

该程序在 Windows 和 Linux 平台上都能正常运行。 但是,在 Mac OS 上运行时,我得到:

Failed to locate method JNI_GetCreatedJavaVMs in the shared library libjvm.dylib

异常。

我使用位于/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Libraries 目录中的libjvm.dylib

我认为问题在于使用了错误的 libjvm,但是我无法在其他目录中找到它。

我很高兴被指向 libjvm 的正确路径。

提前致谢, 卡伦。

【问题讨论】:

  • 我使用的 libjvm.dylib 包含 _JNI_GetCreatedJavaVMs_Impl(JNI_GetCreatedJavaVMs 的实现)。似乎应该有另一个库将呼叫转发给这个......

标签: java c++ macos jvm java-native-interface


【解决方案1】:

JNI_GetCreatedJavaVMs 以及其他 JVM 函数位于 JavaVM 文件中,该文件可在 /System/Library/Frameworks/JavaVM.framework/ 目录中找到。

【讨论】:

    【解决方案2】:

    如果尝试使用 Oracle JRE,请不要使用 libjvm.dylib。这将导致 MacOS 弹出一个窗口,要求用户安装 Java6(大多数用户不会安装)。而是使用 libjli.dylib。它具有相同的功能,但会绕过 Apple 的弹出警告。然后只需将 JRE 与您的应用打包即可。

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 2018-12-08
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 2019-06-26
      • 2014-09-17
      相关资源
      最近更新 更多