首页 / JAVA / 了解Mac上的Oracle Java
了解Mac上的Oracle Java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了了解Mac上的Oracle Java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2609字,纯文字阅读大概需要4分钟。
内容图文
![了解Mac上的Oracle Java](/upload/InfoBanner/zyjiaocheng/890/0a7c7fb20fbb4ba5a5f5ae42a48682ae.jpg)
我已经在OS X上使用Java很多年了,而且最近苹果公司在默认情况下停止使用Java时我会让操作系统为我安装它(Apple当然是多种多样的).
所以现在我正在使用OS X 10.8,我需要安装Java 7,所以我只是以DMG形式获得了Oracle的Update 15并运行了安装程序.它更新了我的/usr/bin/java(及相关文件)以指向:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
将其追溯到’/System/Library/Frameworks/JavaVM.framework/Versions’,所有内容都指向’Current’或’CurrentJDK’,前者是指向’A’的链接(这是Oracle的Java 7,我可以告诉,不知道为什么它是’A’),后者是’/System/Library/Java/JavaVirtualMachines/1.6.0.jdk’中Apple的Java 6的链接.
现在这真的令人困惑,但这还不是我的问题.看来这里安装了一个Java 7:
/System/Library/Frameworks/JavaVM.framework/Versions/A
但是这里还安装了一个Java 7:
/Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk
在两者中查找’java’并打印出版本会产生相同的版本和构建(java版本“1.7.0_15”),但是,当对文件进行散列时它们是不同的.
那么这是否意味着Oracle在两个不同的地方安装了Java 7?如果是这样,为什么?我该使用哪个?为什么有些东西仍然指向Java 6(CurrentJDK).
我查看了甲骨文的网站,但没有任何东西可以清除.
解决方法:
Oracle的JVM仅安装在一个位置.你被误导了!
如您所知,/usr/bin中的Java命令是/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands中二进制文件的符号链接.该目录中的二进制文件是存根应用程序,它们确定要使用哪个Java VM *,然后在该VM版本中执行相应的实际二进制文件.这就是为什么/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands中的所有二进制文件的大小几乎相同,尽管您希望它们实现完全不同的功能.
您可以使用dtrace查看此操作:
mrowe@angara:~$sudo dtrace -n 'syscall::posix_spawn:entry { trace(copyinstr(arg1)); }' -c "/usr/bin/java -version"
dtrace: description 'syscall::posix_spawn:entry ' matched 1 probe
dtrace: pid 44727 has exited
CPU ID FUNCTION:NAME
8 619 posix_spawn:entry /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
给定的dtrace调用在java -version调用时打印出posix_spawn的path参数.在我的例子中,存根应用程序在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk中找到了Apple的Java 1.6运行时,并且正在调用该版本的java命令.
存根二进制文件还有另一个好处:当它们检测到没有安装Java VM时,它们将提示用户安装一个.
至于CurrentJDK符号链接,最好的我可以告诉它为了向后兼容过去,当Apple是OS X上JVM的唯一来源时.
*在确定应使用哪个Java VM时,会考虑多种因素的组合.如果设置了JAVA_HOME(尝试JAVA_HOME = / tmp java).如果未设置JAVA_HOME,则会发现系统上所有虚拟机的列表.如果设置了JAVA_VERSION和JAVA_ARCH环境变量,则将虚拟机列表过滤为特定版本和支持的体系结构.然后根据体系结构(优选64位超过32位)和版本(更新更好)对结果列表进行排序,并返回最佳匹配.
内容总结
以上是互联网集市为您收集整理的了解Mac上的Oracle Java全部内容,希望文章能够帮你解决了解Mac上的Oracle Java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。