跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

怎么在MacOS使用Homebrew安装Java_命令行一键部署开发环境

直接运行 brew install java 安装的是 OpenJDK 21(截至 2024 年中),因 Homebrew 默认仅维护最新 LTS(JDK 21)和最新稳定版,不自动提供 JDK 8 或 17。 brew install java 会装什么版本? 直接运行
brew install java
安装的是 OpenJDK 21(截至 2024 年中),不是 JDK 8 或 17。Homebrew 默认只维护最新 LTS 和最新稳定版,而当前最新 LTS 是 JDK 21,所以它不会自动给你装历史版本。 常见错误现象:
java -version
显示 21,但项目要求 JDK 17,编译直接报
Unsupported class file major version 65
(对应 JDK 21)。 要用 JDK 17,得显式安装:
brew install openjdk@17
装完后需手动配置
JAVA_HOME
,因为 Homebrew 不会自动软链到
/usr/libexec/java_home
管理的路径 多个 JDK 共存时,
/opt/homebrew/opt/openjdk@17/bin/java
是真实可执行路径,别依赖
which java
的结果 JAVA_HOME 怎么设才不被覆盖? MacOS 的 shell 初始化逻辑复杂,
~/.zshrc
里写死
export JAVA_HOME=...
很容易被 SDKMAN、IntelliJ 自带 JBR、甚至系统更新后的
/usr/libexec/java_home
覆盖。 推荐做法是绕过硬编码,用
/usr/libexec/java_home
动态查: 立即学习 “ Java免费学习笔记(深入) ”;
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
这样既兼容系统多 JDK 管理机制,又避免路径写死。注意两点:
-v 17
匹配主版本号,不是完整版本如
17.0.2
;如果装了多个 17.x,它默认选最新子版本 必须放在
~/.zshrc
末尾,且确保没其他地方(比如
~/.zprofile
)重复设置或清空
JAVA_HOME
改完记得
source ~/.zshrc
,别只开新终端——Zsh 启动时可能读
.zprofile
而非
.zshrc
为什么 javac 可用但 java -jar 报 “no main manifest attribute”? 这不是 Java 安装问题,而是 Homebrew 安装的 OpenJDK 默认禁用了
javafx
和部分
java.se.ee
模块,但更常见的原因是:你运行的 jar 包本身没打包
Main-Class
声明。 Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 验证方式很简单:
jar -tf your-app.jar | grep MANIFEST
如果输出里没有
META-INF/MANIFEST.MF
,或者 MF 文件里没
Main-Class:
行,那跟 Homebrew 无关。解决路径只有两个: 重打包:用
jar -cvmf MANIFEST.MF your-app.jar ...
手动指定入口类 不依赖 Manifest:改用
java -cp your-app.jar com.example.Main
显式调用 如果是 Gradle 构建,检查
jar { manifest { attributes 'Main-Class': 'com.example.Main' } }
是否漏写 一键部署脚本里哪些步骤真能省?哪些不能跳? 所谓“一键部署”,真正能自动化的只有安装和基础环境变量设置;其余几乎都得人工确认。 可安全自动的部分:
brew install openjdk@17 && brew install maven gradle
写入
JAVA_HOME
到
~/.zshrc
(但要先检测是否已存在,避免重复) 必须人工介入的部分: 确认项目
pom.xml
或
build.gradle
中的
sourceCompatibility
和
targetCompatibility
是否匹配所装 JDK 版本 IDE(如 IntelliJ)的 Project SDK 和 Project bytecode version 需手动同步,它不会读 shell 里的
JAVA_HOME
某些老项目依赖
java.ext.dirs
或
endorsed
目录,JDK 9+ 已移除,这类兼容性问题无法靠脚本绕过 最常被忽略的是:Homebrew 安装的 JDK 缺少
jmc
(Java Mission Control)和
jvisualvm
,需要单独装
brew install --cask oracle-jdk-jmc
或换用 Eclipse Temurin 构建的 JDK。

相关文章