mac上的Java 7和JavaVM.framework

时间:2012-12-13 05:47:22

标签: java macos java-native-interface java-7

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

我刚刚使用JFrame运行了一个简单的Java程序,并使用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直接。

  3. 非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

Mac上的Oracle JDK宣传就像其他地方的Oracle JDK一样。它有命令,标题和库。您应该能够像其他地方一样使用JDK的内容。我们通常创建和使用加载LoadLibrary的JNI库;我无法通过调用界面报告个人经验。