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