mac上的Java 7和JavaVM.framework

bli*_*406 7 java macos java-native-interface java-7

我在mac上玩了Java 7 update 9,发现了一件有趣的事情.

我刚刚运行了一个带有a的简单Java程序JFrame,并附加了它lldb.然后我检查了这个Java程序加载的库,我看到:

"/System/Library/Frameworks/JavaVM.framework/JavaVM" 在里面.

所以我有两个问题:

  1. 这个JavaVM为Java 7做了什么?我认为mac上的Java 7与Windows和Linux上的相应版本一样是自洽的.通过使用"nm",我可以看到这个JavaVM定义了很多函数,比如JNI_CreateJavaVM,它也在libjvm.dylib中定义.

  2. 我应该用Java 7链接到JNI库?还在JavaVM.framework吗?我可以链接到位于下面的库

    /Library/Java/JavaVirualMachine/jdk.1.7.0直接.

任何帮助都感激不尽.

Mat*_*att 0

对于第一部分,JavaVM 指向 Mac JavaVM (1.6)。仔细查看 Info.plist 文件,看起来 Mac Java 支持 JNI(除其他外),而 Oracle Java 仅支持 CommandLine。您似乎无法在 Mac OS X 上链接到 1.7。也有很多相关问题。

要查找支持 JNI 的 JVM,请执行以下操作:

/usr/libexec/java_home -t JNI
Run Code Online (Sandbox Code Playgroud)

这可能会返回 1.6.0 JDK。您可以使用参数运行它-V来获取可用 JVM 的完整列表。