mac上的Java 7和JavaVM.framework
我在mac上玩了一会儿Java7Update9,发现了一件有趣的事情 我刚刚用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定义了许多函数,比如
JFrame
运行了一个简单的Java程序,并用lldb
附加到它。然后我检查了这个Java程序加载的库,我看到:
“/System/Library/Frameworks/JavaVM.framework/JavaVM”
所以我有两个问题:
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,并且头都在那里。我认为爪哇胡家是混乱的。