# 도구 체인을 유지한 채 Mac에서 Java 제거하기

> 시스템 스텁은 건드리지 말고, 삭제 전에 설치된 JDK를 목록으로 확인한 뒤, 제거하려는 런타임에 의존하는 것을 점검하세요

Published: 2026-08-08

"Mac에서 Java 제거" 안에는 질문 두 가지가 숨어 있고, 둘 중 하나를 잘못 다루면 도구 체인이 깨집니다. 첫째는 어떤 Java가 있는지입니다. 둘째는 이 기기에서 그 Java를 필요로 하는 다른 프로그램이 무엇인지입니다.

Oracle 자체 안내는 짧고, 그중 가장 중요한 내용은 단계가 아니라 건드리지 말아야 할 디렉터리에 대한 경고입니다.

## /usr/bin에서 Java를 지우지 마세요

Oracle은 직접 말합니다. `/usr/bin`에서 Java 도구를 지워 Java를 제거하려 하지 말라는 것입니다. 그 디렉터리는 시스템 소프트웨어의 일부이며, 변경 사항은 다음 macOS 업데이트 때 Apple이 되돌립니다.

가장 흔히 실수하는 지점입니다. `which java`를 치면 `/usr/bin` 아래 경로가 나와 정답처럼 보이지만 그렇지 않습니다. macOS에서 그것은 실제로 설치된 런타임을 가리키는 스텁입니다. 지워도 건물이 아니라 이정표만 사라지고, macOS가 나중에 어차피 복구합니다.

## 지우려는 Java가 무엇인지 알기

런타임과 개발 키트는 설치도 제거도 다릅니다.

브라우저 플러그인과 환경설정 패널이 있는 소비자용 런타임인 Oracle JRE는 Oracle이 명시한 세 곳에 있습니다.

```
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
/Library/PreferencePanes/JavaControlPanel.prefPane
~/Library/Application Support/Oracle/Java
```

JDK는 별개이며 `/Library/Java/JavaVirtualMachines/` 아래에 설치되고, 제거에는 관리자 권한이 필요합니다. 여러 개를 나란히 둘 수 있으며, 이는 정상이고 종종 의도된 구성입니다.

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/java-runtimes-and-stubs.webp" width="1360" height="454" loading="lazy" alt="시스템 디렉터리의 명령줄 스텁은 Library Java Virtual Machines 아래 설치된 JDK를 가리키고, Oracle 런타임 플러그인과 환경설정 패널은 별도 설치입니다.">
  <figcaption>시스템 디렉터리의 명령은 런타임 자체가 아니라 포인터입니다. JDK를 지우면 실제 설치가 사라지고, 포인터만 지우면 이정표만 깨지며 macOS가 다시 복구합니다.</figcaption>
</figure>

결정하기 전에 실제로 설치된 것을 나열하세요.

```
/usr/libexec/java_home -V
```

시스템이 아는 모든 JDK를 버전과 경로와 함께 출력합니다. 목록에 항목이 하나면 선택이 단순합니다. 네 개라면 다음 절이 중요합니다.

## 잘못된 JDK를 지우면 다른 소프트웨어가 깨집니다

Java는 그 자체만으로 설치되는 경우가 드뭅니다. Android 도구, Elasticsearch, Minecraft 런처, JetBrains IDE, Apache 도구, 일부 기업용 VPN 및 인쇄 클라이언트는 모두 JVM을 포함하거나 의존합니다. 자체 복사본을 포함한 쪽은 영향이 없습니다. 시스템이 제공하는 Java를 참조하는 쪽은 바뀌면 동작이 멈춥니다.

패키지 관리자로 설치한 JDK는 설치한 방식 그대로 제거하세요. Homebrew로 설치한 temurin은 `brew uninstall`로 제거하고, 파일을 손으로 지우면 패키지 데이터베이스에는 여전히 설치된 것으로 남습니다.

## 지원되는 방식으로 JDK 제거하기

`.pkg`로 설치한 JDK는 `/Library/Java/JavaVirtualMachines/` 아래 이름에 버전이 들어간 디렉터리를 지우면 되고, `sudo`가 필요합니다. 한 버전에 한 번 제거하고, 다음을 지우기 전에 중요한 도구를 확인하세요.

이후 `/usr/libexec/java_home -V`에 더 이상 나오지 않아야 하며, 셸 프로필에 손으로 넣은 `JAVA_HOME`은 이제 아무것도 가리키지 않습니다. 그 변수는 깨끗이 제거한 뒤에도 도구 체인이 실패하는 두 번째로 흔한 원인입니다.

## 터미널을 닫기 전에 확인하기

```
/usr/libexec/java_home -V
java -version
```

첫 번째는 남은 것을 보여 줍니다. 두 번째는 버전을 보고하거나 런타임이 설치되어 있지 않다고 알리며, Java를 없애려던 기기에서는 오류가 아니라 올바른 결과입니다.

## 흔적 확인이 도움이 되는 경우

Java 잔여는 용량이 작고 흩어져 있으며 눈에 잘 띄지 않습니다. 캐시, 환경설정, 플러그인, 환경설정 패널입니다. 중요한 것은 목록이며, 터미널로 이미 확인할 수 있습니다. JDK 전체 흔적이나 자체 JDK를 포함한 앱의 흔적을 용량과 함께 한 목록으로 보고 싶다면, [Mole](https://mole.fit/)은 경로를 미리 알 필요 없이 그렇게 해 줍니다.

## 이후에 확인할 세 곳

첫 번째는 셸 프로필입니다. `~/.zshrc`나
`~/.zprofile`에 직접 적어 둔 `JAVA_HOME`은 JDK를 지워도 함께 사라지지 않습니다. 더 이상 존재하지 않는 경로를 계속
가리키고, 새로 연 셸마다 깨진 변수를 물려받습니다. 해당 줄을 지우거나
`export JAVA_HOME=$(/usr/libexec/java_home)`으로 바꿔 시스템에 있는 JDK를
따라가도록 하세요.

두 번째는 IDE입니다. JetBrains 도구와 Android Studio는 프로젝트마다 특정 JDK
경로를 기록해 두며 시스템 변경을 따라가지 않습니다. 그 결과 명령줄에서는 문제없는데
특정 프로젝트만 빌드에 실패하는 현상이 나타납니다.

세 번째는 패키지 관리자로 설치한 항목입니다.
`brew list | grep -i -E 'jdk|temurin|zulu|openjdk'`로 Homebrew에서 들어온 항목을 확인할 수 있습니다.
제거는 `brew uninstall`로 하세요. 디렉터리를 수동으로 지우면
패키지 데이터베이스는 여전히 설치된 것으로 남습니다.

---

Canonical HTML page: https://mole.fit/ko/blog/how-to-uninstall-java-mac
Blog index for agents: https://mole.fit/ko/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
