我在mac上玩了Java 7 update 9,发现了一件有趣的事情。
我刚刚使用JFrame
运行了一个简单的Java程序,并使用lldb
附加到该程序。然后我检查了这个Java程序加载的库,我看到了:
"/System/Library/Frameworks/JavaVM.framework/JavaVM"
。
所以我有两个问题:
这个JavaVM为Java 7做了什么?我认为mac上的Java 7与Windows和Linux上的相应版本一样是自洽的。通过使用“nm”,我可以看到这个JavaVM定义了很多函数,比如JNI_CreateJavaVM,它也在libjvm.dylib中定义。
我应该使用Java 7链接到JNI库?还JavaVM.framework
?我可以链接到位于
/Library/Java/JavaVirualMachine/jdk.1.7.0直接。
非常感谢任何帮助。
答案 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库;我无法通过调用界面报告个人经验。