FAILURE: C:\Program Files (x86)\Java\jre1.8.0_202

calico·2025년 5월 30일

Error

목록 보기
2/10

gradle 빌드 시 JRE 1.8/tools.jar 에러 발생 이유


1. 환경변수 변경 적용이 “파워셸/명령 프롬프트”에 완전히 반영되지 않았거나


  • 변경 후 새 터미널을 열었는지 확인

  • 만약 기존에 열려 있던 콘솔(심지어 Windows Terminal/IntelliJ/VSCode 등 포함)에서는 변경 내용이 반영되지 않습니다.



2. 이중 환경 문제 or 계정/관리자 권한 문제


  • 특정 조건(시스템 PATH 오염, 관리자 권한 차이 등)에서 환경변수 적용이 누락될 수도 있습니다.

당연히 JDK 19와 24 모두 설치되어 있는 "상태"지만, 중요한 것은 gradle이 실제로 어떤 java.exe(=JDK)를 참조하냐입니다.

  • 지금 시스템 상태 정리

    • JAVA_HOMEJDK 19로 정상 세팅됨!

    • 하지만 PATH의 우선순위에 JDK 24가 더 앞에 있어서, cmd/powershell의 기본 java/javac은 여전히 JDK 24를 사용합니다.

    1. gradlew.bat는 JAVA_HOME이 정의되어 있으면 무조건 C:\Program Files\Java\jdk-19\bin\java.exe 를 이용해서 gradle을 실행합니다.

    2. 지금 오류 메시지와 [DEBUG] 상태

      • gradle 실행 당시 JAVA_HOME이 비어 있었거나,

      • 파워셸에서는 잡혔는데, gradlew 실행 환경에서는 인식이 안 된 것으로 보입니다.

  • 여러 JDK가 설치되어 있어도 상관없음

    • JAVA_HOME만 JDK 19로 정확히 잡혀 있으면 gradle 빌드는 무조건 JDK 19로 동작해야 합니다.

    • 기본 java 명령(커맨드라인)에서 24가 출력되는 것은 "Path에서 JDK 24가 먼저 나오는 것"일 뿐, gradle 빌드와 직접적 관련 없음!

  • 그런데도 계속 JRE 1.8/tools.jar 에러가 난다면?

    • 원인

      1. "JAVA_HOME이 gradlew 빌드 실행 시점/환경에 정확하게 전파되지 않는 것"

      2. gradle의 gradle.properties 등 어딘가에서 org.gradle.java.home가 강제 지정된 것

  • Check List

    1. JAVA_HOME을 시스템 변수로 등록 후 PC를 '완전히' 재시작

      • 간혹 환경변수가 시스템 전체(session)에 반영되지 않아 꼬일 때가 있습니다.

      • 재부팅 강력 추천!

    2. PowerShell/명령프롬프트 창을 '반드시 새 창'에서 실행

      • 환경변수가 반영 안 된 채로 예전 쉘에서 실행하면 gradle에 안 전파될 수 있습니다.
    3. gradlew.bat에 디버그 코드 넣고 '실행 후 바로 출력'을 확인 (이미 위에서 해봤지만, 재부팅 후 재확인)

    4. gradle.properties 어디에도 org.gradle.java.home 등이 남아있는지 반드시 검색!

      • 프로젝트 루트

      • C:\Users\-\.gradle\gradle.properties (사용자 홈 아래!!)

    5. PATH에서 JRE 1.8, javapath가 너무 앞쪽에 있으면, JAVA_HOME 인식이 꼬일 수 있으니, 아래로 내리기
      (그래도 gradlew는 JAVA_HOME만 사용함)



3. PATH 우선순위 문제(드물지만 간혹)


  • PATH의 앞쪽에 JRE만 들어있으면, gradlew.bat이 JAVA_HOME이 없을 때 이걸 우선 찾기도 함

  • 그러나 지금은 JAVA_HOME이 정의되어 있으니 이론적으로 문제가 없어야 정상입니다.



4. gradle 데몬 캐시/프로퍼티 문제


  • 데몬 캐시나 gradle.properties에서 java.home 등으로 강제 지정하는 케이스



해결 방법


1. '관리자 권한' PowerShell 실행


  • 시작 버튼 → PowerShell → 우클릭 → “관리자 권한으로 실행”



2. 아래 명령 입력 (실제 윈도우 환경변수값 확인)


[System.Environment]::GetEnvironmentVariable("JAVA_HOME", "Machine")
[System.Environment]::GetEnvironmentVariable("JAVA_HOME", "User")
echo $env:JAVA_HOME
  • ‘Machine’이 반드시 C:\Program Files\Java\jdk-19로 나와야 합니다.



3. 프로젝트 경로 이동 후 JAVA_HOME 직접 체크


cd C:\Users\kah\Documents\energy-keeper-app\Backend\energykeeper
echo $env:JAVA_HOME



4. gradlew.bat 실행 & 디버그 메시지 확인(아까 추가한 [DEBUG] 부분)


.\gradlew.bat build -PbuildFrontend=true
  • [DEBUG] JAVA_HOME=...이 JDK 19로 찍히고 있는지 확인하세요.



5. 그래도 똑같은 JRE 1.8 에러가 나면...


  • 반드시 다음 파일을 보여주세요
    • C:\Users\kah\.gradle\gradle.properties (사용자 홈폴더)
    • <프로젝트폴더>/gradle.properties
  • 해당 파일에 만약
    org.gradle.java.home=...
    이 있으면 꼭 주석처리(#)하거나 삭제하고 재 시도!
    (이 값이 있으면 시스템 환경변수보다 이 값이 우선 적용됩니다.)



요약


  • 환경변수 수정 후 모든 터미널/IDE를 종료하고 “완전히 새로 열린” 창에서만 시도!

  • gradlew.bat 내 [DEBUG] JAVA_HOME이 JDK 19로 출력되는지 꼭 확인!

  • 그래도 안 되면 gradle.properties에서 org.gradle.java.home 존재 검사!

  • 필요할 경우 윈도우 재부팅까지!

cmd에서는 JAVA_HOME이 제대로 반영되고 빌드가 잘 되는데, powershell에서는 예상과 다른 자바가 계속 실행되는 상황



주요 원인 및 참고 사항


1. PowerShell의 자바 실행 우선순위


  • PowerShell에서 echo $env:JAVA_HOME은 분명히 올바른 JDK 19 경로를 반환하고 있습니다.

  • 그러나, powershell의 환경변수 동기화나, 실행 환경 자체(예: "사용자"가 아닌 "시스템" 환경변수만 인식 또는 세션 캐싱 현상)로 인해 javac/java 실행 경로가 기대와 다르게 동작할 수 있습니다.

  • 이럴 때는 PATH 우선순위와 javapath 심볼릭 링크가 자주 영향을 미치곤 합니다.



2. cmd와 powershell 환경 변수 캐시


  • Windows는 cmd, powershell, IDE 등이 각각 환경 변수 값을 "처음 열린 시점"의 값으로 로드합니다.

  • 환경 변수를 변경한 후 기존 창을 그대로 두면, 이전 세션의(캐시된) 환경변수를 계속 사용합니다.

  • 반드시 모든 파워셸 창을 종료했다가 새로 여세요!



해결 방법 및 체크리스트


1. PowerShell 창을 모두 다시 종료 후 새로 열기



2. 아래 세 가지 값 확인

echo $env:JAVA_HOME
java -version
javac -version

모두 JDK 19로 출력되어야 정상입니다.



3. java/javac 경로 직접 확인


Get-Command java
Get-Command javac

or

where java
where javac
  • 위치가 C:\Program Files\Java\jdk-19\bin\ 쪽으로 나와야 확실합니다.



4. 그럼에도 여전히 powershell에서만 자바가 다르게 잡히면

  • PATH 환경변수 우선순위를 "시스템 PATH"에서 JDK 19 bin이 javapath보다 위로 가게 조정해보세요.

    • 환경 변수 > 시스템 변수 > Path > 편집에서 JDK 19 경로를 최상단으로 올리기
  • 추가로, 파워셸 세션에서 다음 명령을 실행해 임시로 명확하게 지정할 수 있습니다.

$env:JAVA_HOME = 'C:\Program Files\Java\jdk-19'
$env:Path = "C:\Program Files\Java\jdk-19\bin;" + $env:Path
  • 그 후 다시 java -version, javac -version 확인!



요약


cmd와 powershell이 다르게 동작하는 것은 윈도우 환경변수 세션 적용 순서 및 PATH 우선순위 문제 때문입니다.

  • PowerShell 세션을 꼭 재시작해야 환경변수 변경이 반영됩니다.

  • Path 우선순위 확인, 필요시 JDK bin 경로를 최상단으로!

  • 여전히 문제 있을 때는 경로 그대로 추가해서 강제 셋팅 가능!



ps. 난 그냥 다 지우고 다시 깜... 하나 밖에 안 써서...

profile
https://velog.io/@corone_hi/posts

0개의 댓글