JDK,JRE在mac OS X中的目录结构

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

首先要明确一个问题,JDK与JRE的区别是什么?
JRE: Java Runtime Environment. It is basically the Java Virtual Machine where your Java programs run on. It also includes browser plugins for Applet execution.

JDK: It’s the full featured Software Development Kit for Java, including JRE, and the compilers and tools (like JavaDoc, and Java Debugger) to create and compile programs.
对应于命令行模式:

java -version 显示JRE版本

JDK包含了JRE,是一个工具集

javac -version 显示JDK版本

那么,显示的是什么版本,是系统的版本还是命令的版本?
这里需要知道另外一个命令:

/urs/libexec/java_home -V 显示系统中所有的JDK版本

比如我的macbook上的显示:
1.8.0_45, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
1.6.0_65-b14-466.1, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-466.1, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

默认用的是第一个版本,继续:

echo $JAVA_HOME

输出为空

export JAVA_HOME=”`/usr/libexec/java_home -v ‘1.6*’` “

输出:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

此时如果输入

java -version 或者 javac -version 显示的版本都是1.6.0,改动之前是1.8.0

猜想:运行java和javac命令受到java_home的影响,java_home改变了这两个命令的真实位置。

下面来寻找它们之间的关系:
1.找到javajavac命令的真实位置

> which java; which javac

/usr/bin/java
/usr/bin/javac

> ll /usr/bin/java; ll /usr/bin/javac

/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
/usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac

挖掘一下后面的一长串地址:
> ll /System/Library/Frameworks/JavaVM.framework/Versions/

lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 6 7 20:26 1.6.0 -> CurrentJDK
drwxr-xr-x 7 root wheel 238 6 7 20:27 A
lrwxr-xr-x 1 root wheel 1 6 7 20:26 Current -> A
lrwxr-xr-x 1 root wheel 59 6 7 20:26 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

> ll /System/Library/Frameworks/JavaVM.framework/Versions/Current/

total 80
drwxr-xr-x 45 root wheel 1530 6 7 20:27 Commands
drwxr-xr-x 4 root wheel 136 4 15 01:19 Frameworks
-rwxr-xr-x 1 root wheel 105200 5 28 2014 JavaVM
drwxr-xr-x 42 root wheel 1428 6 7 20:27 Resources
drwxr-xr-x 3 root wheel 102 6 7 20:27 _CodeSignature

在Commands中找到java和javac,运行它们,得到的版本号与JAVAHOMEJAVA_HOME为版本1.8,即运行:

export JAVA_HOME=” `/usr/libexec/java_home -v ‘1.8*’ `”

> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java -version

显示为版本1.8

基本上到这里,可以得出一个结论:java和javac使用的真实命令位置,由$JAVA_HOME决定,它决定了命令行使用的JDK版本。

这个机制是怎样的?

当我们 > export JAVA_HOMEusr/libexec/java_home -v '1.8*' 给出了JDK的真实位置:

/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

来看看这个目录有什么:
ll /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

total 52192
-rw-rw-r– 1 root wheel 3244 4 11 02:11 COPYRIGHT
-rw-rw-r– 1 root wheel 40 4 11 02:12 LICENSE
-rw-rw-r– 1 root wheel 159 4 11 02:12 README.html
-rw-rw-r– 1 root wheel 110114 3 10 08:47 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-rw-r– 1 root wheel 178403 4 11 02:12 THIRDPARTYLICENSEREADME.txt
drwxrwxr-x 46 root wheel 1564 4 11 02:21 bin
drwxrwxr-x 9 root wheel 306 4 11 02:11 db
drwxrwxr-x 9 root wheel 306 4 11 02:11 include
-rw-rw-r– 1 root wheel 5172318 3 10 08:47 javafx-src.zip
drwxrwxr-x 10 root wheel 340 4 11 02:14 jre
drwxrwxr-x 14 root wheel 476 4 11 02:14 lib
drwxrwxr-x 5 root wheel 170 4 11 02:12 man
-rw-rw-r– 1 root wheel 528 4 11 02:12 release
-rw-rw-r– 1 root wheel 21239600 4 11 02:12 src.zip

令人惊奇是,这个目录下面的bin中的命令,
java 命令所在目录/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/
是一样的,也就是说 java 其实运行的是bin中命令java

待续

什么是Mac OS Classic?为什么苹果公司Cocoa类库有不少NS前缀?Mac OS X/OS X/macOS傻傻分不清?什么是macOS的五大API法王?macOS系统的Java支持? Cocoa、Carbon、POSIX、X11Java并称为苹果平台的五大API.Cocoa最早从NeXPSTEP类库发展而来,之后又变身为用于移动平台的Cocoa Touch. 它最早是为macOS 开发的一套应用程序框架,它基于 Objective-C.Carbon 曾经是 macOS 应用程序开发的主要框架之一,但随着 Cocoa 的成熟,Carbon 的使用逐渐减少。 阅读详情

相关推荐

Java 7u80 JDK for Mac OS X安装与应用指南

Java Development Kit(JDK)是开发Java应用程序的软件开发环境,由Java运行时环境(JRE用于开发Java程序的编译器、调试器等工具组成。JDK允许开发者编写、编译运行Java程序,是Java平台的核心部分。Java编译器(Javac)是JDK的核心工具之一,负责将Java源代码文件(.java)编译成Java字节码文件(.class)。字节码文件随后可以在任何安装了Java虚拟机(JVM)的系统上运行。

weixin_30336531的博客 1256

Mac底下javajre路径

java_home路径: /Library/Java/JavaVirtualMachines/jdk-16.0.1.jdk/Contents/Home /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

麦峰强的博客 1669

javaJDKjre目录结构

JDKjre目录结构

qq_40177185的博客 4902

Mac配置java环境变量

JRE:(Java Runtime Environment),java运行环境。包括Java虚拟机(JVM Java Virtual Machine)Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。JDK:(Java Development Kit Java)开发工具包。JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

qq_56866000的博客 1万+

mac 查看java安装路径

mac java安装路径 java_home

u011618288的博客 1215

JDK JRE 目录的文件结构

JDK目录结构 要想编译运行Java程序,离不开Java的编译运行环境。Sun公司提供了自己的一套Java开发环境,通常称为JDK(Java Development Kit,Java开发工具集)。   在JDK的安装目录下,可以看到JDK目录结构,如下表所示。   JDK目录结构   目录 说  明 bin目录

JavaDevelopmentLearner 2590

java jre mac_JDK,JREmac OS X中的目录结构

首先要明确一个问题,JDKJRE区别是什么?JRE: Java Runtime Environment. It is basically the Java Virtual Machine where your Java programs run on. It also includes browser plugins for Applet execution.JDK: It’s the ful...

weixin_30510711的博客 456

Mac OS X 10.10 Yosemite下安装javajdk、mysql、maven、idea

Mac OS X Yosemite已经在2014年10月17日正式发布了。 作为一个java开发者,尝鲜第一时间安装了最新版本。 之前的OS X系统还是有很多不同的。下面主要在java开发环境方面做一个笔记。 1、jdk安装 默认情况下,10.10系统同样没有安装JDK,也不会自动到Apple服务器下载jdk。 这两有两个选择,一是到oracle官网下载最新版(1.

system1190的专栏 584

java mac os x_关于macosMac OS X上的Java安装位置在哪里?

我刚刚从这里下载了Mac OS 107.5的Java7U17,然后成功安装了它。为了做一些JNI编程,我需要知道在我的Mac上安装了Java。我以为在/Library/Java/JavaVirtualMachines/文件夹中,会有一个名为1.7.0.jdk的文件夹或其他东西,但后来我发现文件夹是空的。这是通过在终端中运行ls /Library/Java/JavaVirtualMachines/来...

weixin_35103924的博客 1549

Mac OS X上的Java安装位置在哪里?

I just downloaded Java 7u17 on Mac OS 10.7.5 from here and then successfully installed it. 我刚刚从下载在M

asdfgh0077的博客 3042

Mac OS X下安装Java 7及配置Eclipse JDK

下载mac版专用的jdk1.7,地址如下:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html。 下好之后,双击dmg打开,如图。直到安装完成,这里不会让你选择...

chuanao8829的博客 114

Mac OS X Lion Eclipse JDK JRE Not found problem(Solved)

the origin page from http://stackoverflow.com/questions/6614380/jdk-on-osx-10-7-lion   Tips: the steps 5-10 are not suit for my eclipse.no JVM Contents (MacOS X Default) ,only Standard Jre Environme...

liuqzan的博客 168

java jdk jre版本要一样吗a_关于javaJAVA_HOME应该指向一个JDK而不是一个JRE

我正在尝试为我的项目设置Maven,但出现此错误" JAVA_HOME应该指向一个JDK而不是一个JRE"我知道已经有类似的问题,但是没有用。 如何在Windows中将JAVA_HOME指向JDK。 我正在使用IntelliJ IDEA首先,您需要安装一个JDK。 你做完了吗?docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t...

weixin_39593247的博客 1441

Mac OS X下安装并配置JDK

这篇博客即使网络上很多了,博主还是想为踏上编程第一步的各位尽一份微薄之力。 ———–好的开始是成功的一半 博主所用环境: Mac OS X 10.12.51.访问Oracle官网下载JDK(博主下载的是1.8的最新版),为了方便各位下载请直接点击如下链接即可:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo

poppycock的博客 2611

Mac OSX 中JDK设置问题

OSX 中JAVA_HOME相关一、软件环境OSX EI Capitan 10.11.6二、Application1. Eclipse指定vm在windows许多教程下,都是说改/Applications/Eclipse.app/Contents/Eclipse/eclipse.ini文件中,加入 -vm参数,然并卵,根本没起作用。如果不插入到最后,还有可能报错。在OSX下,需要修改/Appli

微寒的技术博客 9518
上一篇: Mac OS X终端(iterm) javac乱码的解决
readycsdn
博客等级 码龄11年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值