mac上的Java 7和JavaVM.framework

mac上的Java 7和JavaVM.framework,java,macos,java-native-interface,java-7,Java,Macos,Java Native Interface,Java 7,我在mac上玩了一会儿Java7Update9,发现了一件有趣的事情 我刚刚用JFrame运行了一个简单的Java程序,并用lldb附加到它。然后我检查了这个Java程序加载的库,我看到: “/System/Library/Frameworks/JavaVM.framework/JavaVM” 所以我有两个问题: 这个JavaVM对Java7做什么?我认为mac上的Java7与Windows和Linux上的相应版本一样具有自一致性。通过使用“nm”,我可以看到这个JavaVM定义了许多函数,比如

我在mac上玩了一会儿Java7Update9,发现了一件有趣的事情

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

“/System/Library/Frameworks/JavaVM.framework/JavaVM”

所以我有两个问题:

  • 这个JavaVM对Java7做什么?我认为mac上的Java7与Windows和Linux上的相应版本一样具有自一致性。通过使用“nm”,我可以看到这个JavaVM定义了许多函数,比如JNI_CreateJavaVM,它也在libjvm.dylib中定义

  • 对于使用Java 7的JNI库,我应该链接到什么?还是
    JavaVM.framework
    ?我可以链接到位于下的库吗

    /Library/Java/JavaVirualMachine/jdk.1.7.0


  • 任何帮助都将不胜感激。

    对于第一部分,JavaVM指向macjavavm(1.6)。仔细看看Info.plist文件,看起来Mac Java支持JNI(除其他外),而Oracle Java只支持命令行。看起来你无法在MacOSX上链接到1.7。还有很多相关的问题

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

    /usr/libexec/java_home -t JNI
    

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

    Mac上的Oracle JDK与其他任何地方的Oracle JDK一样。它有命令、头和库。您应该能够像在其他地方一样使用JDK的内容。我们通常创建并使用JNI库,这些库通过LoadLibrary加载;我无法报告调用接口的个人经验。

    我们在Oracle 1.7中一直使用JNI,这可能是重复的。你的意思是只调用java吗?@bmargiles在Mac OS X上?而且它没有使用1.6?java_home-t JNI是否提供了1.7?还是像你提到的那样调用Java?我看到了和你一样的事情。但是,/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home/jre/lib/libjava.dylib存在并具有常用的API,并且头都在那里。我认为爪哇胡家是混乱的。