javac는 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.


253

Java 프로그램을 컴파일하는 중 오류가 발생했습니다.

Windows에 있고 (Windows 관련 문제임) 최신 JDK가 설치되어 있습니다.

PATH변수 와 관련된 솔루션을 시도 했지만 오류가 지속됩니다.

콘솔 출력 :

C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.

7
경로가 설정되지 않은 것 같습니다. 환경 변수로 이동하여 경로 설정
Ron

2
이 질문은 실제 JDK 설치 지침 에서 쉽게 찾을 수 있고 여기에 대한 답변보다 최신의 답변이 있기 때문에 주제에 맞지 않는 것 같습니다. 또한 공식 시작 안내서 의 첫 번째 장에서 모든 플랫폼에 쉽게 사용할 수 있습니다 .
Jason C

8
제이슨 C (Jason C)의 정보에 대해서는 Ta. 그러나 나는이 주제를 주제를 벗어난 것으로 결정한 것이이 답변을 강조한 다른 사람들과는 상충되는 것으로 보인다고 고백한다. 내가하려고하는대로.
Matt Stevens


새 변수를 추가하는 것이 더 쉽고 새 변수 "PATH"를 만들면 세미콜론 (;)과 값의 끝을 추가해야합니다.
Amir Md Amiruzzaman

답변:


434

TL; DR

숙련 된 독자 :

  1. Java 경로를 찾으십시오. 다음과 같이 보입니다 :C:\Program Files\Java\jdkxxxx\bin\
  2. 시작 메뉴에서 "환경 변수"를 검색하여 옵션 대화 상자를 엽니 다.
  3. 검사하십시오 PATH. 오래된 Java 경로를 제거하십시오.
  4. 에 새 Java 경로를 추가하십시오 PATH.
  5. 편집 JAVA_HOME.
  6. 콘솔 / IDE를 닫았다가 다시 엽니 다.

어서 오십시오!

Java 초보자가 직면 한 가장 악명 높은 기술 문제 중 하나 인 'xyz' is not recognized as an internal or external command...오류 메시지 가 발생했습니다.

간단히 말해서 Java를 올바르게 설치하지 않았습니다 . Windows에서 Java 설치를 완료하려면 몇 가지 수동 단계가 필요합니다. JDK 업그레이드 후를 포함하여 Java를 설치 한 후에는 항상이 단계를 수행해야합니다.

환경 변수 PATH

(이미 이미 이해 한 경우 다음 세 섹션을 건너 뛰십시오.)

을 실행할 때 javac HelloWorld.javacmd javac.exe는 위치를 결정해야합니다 . 이것은 PATH환경 변수 인으로 수행됩니다 .

환경 변수는 특수 키 - 값 쌍 (예입니다 windir=C:\WINDOWS). 대부분은 운영 체제와 함께 제공되며 일부는 적절한 시스템 기능을 위해 필요합니다. 이들의 목록은 시작할 때 모든 프로그램 (cmd 포함)으로 전달됩니다. Windows에서 , 거기에 두 가지 유형 : 사용자 환경 변수시스템 환경 변수는 .

다음과 같이 환경 변수를 볼 수 있습니다.

C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...

가장 중요한 변수는 PATH입니다. 로 구분 된 경로 목록입니다 ;. cmd에 명령을 입력하면 목록의 각 디렉토리에서 일치하는 실행 파일이 있는지 검사합니다.

내 컴퓨터에서 PATH:

C:\>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps

내부 명령 이 아닌 javac HelloWorld.java것을 인식하면 cmd 를 실행 하면 시스템 다음에 사용자가 검색 됩니다 . 기계적으로 목록의 모든 디렉토리를 입력하고 확인하는 경우 , , , 등이 존재한다. 를 찾으면 실행합니다. 그렇지 않으면 인쇄javacPATHPATHjavac.comjavac.exejavac.batjavac'javac' is not recognized as an internal or external command, operable program or batch file.

Java 실행 파일 디렉토리를에 추가해야합니다 PATH.

JDK 대 JRE

(이미 이미 이해 한 경우이 섹션을 건너 뛰십시오.)

Java를 다운로드 할 때 다음 중에서 선택할 수 있습니다.

  • 자바 런타임 환경 에 필요한 도구가 포함되어 있습니다 (JRE)는 자바 프로그램을 실행,하지만 하지 새로 컴파일 -이 포함되어 java있지만 javac.
  • 자바 개발 키트 를 모두 포함 (JDK), javajavac기타 개발 도구의 호스트와 함께. JDK는 JRE의 상위 집합입니다.

JDK를 설치 했는지 확인해야합니다 . JRE 만 설치 한 경우 javac하드 드라이브에 Java 컴파일러가 설치되어 있지 않으므로 실행할 수 없습니다 . Windows 프로그램 목록을 확인하고 Java 패키지 이름에 "Development Kit"라는 단어가 포함되어 있는지 확인하십시오.

사용하지 마십시오 set

(어쨌든 계획하지 않은 경우이 섹션을 건너 뛰십시오.)

다른 답변은 다음과 같이 변형을 권장합니다.

C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

그거 하지마. 이 명령에는 몇 가지 주요 문제가 있습니다.

  1. 이 명령은 다른 모든 항목지우고PATH Java 경로로 바꿉니다. 이 명령을 실행 한 후 다양한 다른 명령이 작동하지 않을 수 있습니다.
  2. Java 경로 가 아닐 수도 C:\Program Files\Java\jdk1.7.0_09\bin 있습니다. JDK의 최신 버전이 거의있을 것입니다.이 경로는 다른 경로를 갖습니다.
  3. 새로운 것은 현재 cmd 세션 PATH 에만 적용됩니다 . set명령 프롬프트를 열 때마다 명령 을 다시 입력해야합니다 .

포인트 # 1과 # 2는이 약간 더 나은 버전으로 해결할 수 있습니다.

C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%

그러나 그것은 일반적으로 나쁜 생각입니다.

자바 경로 찾기

올바른 방법은 Java를 설치 한 위치를 찾는 것부터 시작합니다. 이것은 Java 설치 방법에 따라 다릅니다 .

exe 인스톨러

설치 프로그램을 실행하여 Java를 설치했습니다. Oracle 설치 프로그램은 Java 버전을 C:\Program Files\Java\(또는 C:\Program Files (x86)\Java\) 아래에 배치 합니다. 파일 탐색기 또는 명령 프롬프트를 사용하여 해당 디렉토리로 이동하십시오.

각 하위 폴더는 Java 버전을 나타냅니다. 하나만 있으면 찾을 수 있습니다. 그렇지 않으면 최신 버전처럼 보이는 것을 선택하십시오. 폴더 이름이로 시작해야합니다 jdk(반대 jre). 디렉토리를 입력하십시오.

그런 다음 해당 bin디렉토리를 입력하십시오 .

이제 올바른 디렉토리에 있습니다. 경로를 복사하십시오. 파일 탐색기에서 주소 표시 줄을 클릭하십시오. 명령 프롬프트에 있으면 프롬프트를 복사 하십시오.

결과 Java 경로는 (따옴표없이) 형식이어야합니다.

C:\Program Files\Java\jdkxxxx\bin\

압축 파일

JDK가 포함 된 .zip을 다운로드했습니다. 방해가되지 않는 임의의 장소로 추출하십시오. C:\Java\허용되는 선택입니다.

그런 다음 그 bin안의 폴더를 찾으 십시오.

이제 올바른 디렉토리에 있습니다. 경로를 복사하십시오. 이것이 Java 경로입니다.

경로를 무효화 할 수 있으므로 폴더를 이동하지 마십시오.

설정 대화 상자를 엽니 다

편집 대화 상자 PATH입니다. Windows 버전, UI 설정 및 시스템 구성이 엉망인 방법에 따라 해당 대화 상자를 여는 방법은 여러 가지가 있습니다.

다음 중 일부를 시도하십시오.

  • 시작 메뉴 / 작업 표시 줄 검색 상자» "환경 변수"검색
  • 승리 + R» control sysdm.cpl,,3
  • Win + R» SystemPropertiesAdvanced.exe»환경 변수
  • 파일 탐색기»주소 표시 줄에 입력 Control Panel\System and Security\System»고급 시스템 설정 (맨 왼쪽, 사이드 바)»환경 변수
  • 데스크탑»이 PC를 마우스 오른쪽 버튼으로 클릭»속성»고급 시스템 설정»환경 변수
  • 시작 메뉴»컴퓨터를 마우스 오른쪽 버튼으로 클릭»속성»고급 시스템 설정»환경 변수
  • 제어판 (아이콘 모드)»시스템»고급 시스템 설정»환경 변수
  • 제어판 (범주 모드)»시스템 및 보안»시스템»고급 시스템 설정»환경 변수
  • 데스크톱»내 컴퓨터를 마우스 오른쪽 버튼으로 클릭»고급»환경 변수
  • 제어판»시스템»고급»환경 변수

이 중 하나라도 올바른 설정 대화 상자로 이동해야합니다.

Windows 10을 사용하는 경우 Microsoft는 편집 할 수있는 새롭고 멋진 UI 를 제공 PATH합니다. 그렇지 않으면, 당신은 PATH한 줄짜리 텍스트 상자에 압착 된 전체 세미콜론으로 장식 된 영광 을 보게 될 것 입니다. 시스템을 손상시키지 않고 필요한 편집 작업을 수행하기 위해 최선을 다하십시오.

깨끗한 PATH

을보십시오 PATH. PATH사용자 변수와 시스템 환경 변수로 인해 거의 두 가지 변수 가 있습니다 . 둘 다 봐야합니다.

다른 Java 경로를 확인 하고 제거하십시오. 그들의 존재는 모든 종류의 갈등을 일으킬 수 있습니다. 예를 들어, JRE 8 및 JDK 11 PATH이 순서대로 javac있는 경우 Java 11 컴파일러를 호출하여 버전 55 .class파일 을 작성 하지만 javaJava 8 JVM을 호출합니다 (최대 버전 52 만 지원함). 당신이 경험하게 될 것입니다 지원되지 않는 버전의 오류를 모든 프로그램을하지 컴파일 할 수 있어야하고, 실행합니다.) 회피 당신이 단 하나 개의 자바 경로가함으로써 이러한 문제 PATH. 그리고 사용하는 동안 오래된 Java 버전제거 할 수 있습니다. 그리고 당신은 기억 할 필요가 없습니다 JDK가와 JRE 모두.

당신이있는 경우 C:\ProgramData\Oracle\Java\javapath, 뿐만 아니라 그 제거 . Oracle 은 항상 최신 Java 설치를 가리키는 기호 링크 를 작성하여 업그레이드 후 Java 경로 중단 문제를 해결하려고했습니다 . 불행히도 종종 잘못된 위치를 가리 키거나 단순히 작동하지 않습니다 . 이 항목을 제거하고 Java 경로를 수동으로 관리하는 것이 좋습니다.

이제 일반 하우스 키핑을 수행 할 수있는 좋은 기회이기도합니다 PATH. PC에 소프트웨어가 더 이상 설치되어 있지 않은 경로가 있으면 제거 할 수 있습니다. 주위의 경로 순서를 섞을 수도 있습니다 (그러한 것들에 관심이 있다면).

추가 PATH

이제 3 단계 전에 찾은 Java 경로를 가져 와서 시스템에 배치하십시오 PATH.

목록에서 새 경로의 위치는 중요하지 않습니다. 끝에 배치하는 것이 좋습니다.

Windows 10 이전 버전 UI를 사용중인 경우 세미콜론을 올바르게 배치했는지 확인하십시오. 목록의 모든 경로를 구분하는 정확히 하나 있어야합니다.

여기서 할 말이 많지 않습니다. 경로를 추가하고 PATH확인을 클릭하십시오.

세트 JAVA_HOME

당신이 그것을하는 동안뿐만 아니라 설정할 JAVA_HOME수 있습니다. 이것은 Java 경로도 포함해야하는 다른 환경 변수입니다. 널리 사용되는 Java 빌드 시스템 인 MavenGradle을 포함하여 많은 Java 및 비 Java 프로그램 은 올바르게 설정되지 않으면 오류를 발생시킵니다.

JAVA_HOME존재하지 않는 경우 새 시스템 환경 변수로 작성하십시오. 디렉토리가없는 Java 디렉토리의 경로로 설정하십시오 ( bin/예 :) C:\Program Files\Java\jdkxxxx\.

JAVA_HOMEJava를 업그레이드 한 후에도 편집해야합니다 .

명령 프롬프트를 닫았다가 다시 엽니 다

을 수정했지만 PATHcmd를 포함하여 실행중인 모든 프로그램은 이전 버전 만 참조하십시오 PATH. 모든 환경 변수 목록은 프로그램이 실행될 때만 프로그램에 복사되기 때문입니다. 이후에는 캐시 된 사본 만 참조합니다.

cmd 환경 변수새로 고치는 좋은 방법은 없으므로 명령 프롬프트를 닫았다가 다시여십시오. IDE를 사용하는 경우 IDE를 닫았다가 다시여십시오.

또한보십시오


7
이것은 나를 위해 일했지만 Path 문자열 끝에 위치를 추가하려고 시도하기 전에. 처음에만 작동하는 이유는 무엇입니까?
Eric H.

4
감사! 이것은 나를 위해 작동합니다! @ Eric H : 끝에 추가하면 나에게 효과적입니다. 내가 이해 한 것에서 왼쪽에서 오른쪽으로 경로를 통해 javac.exe를 찾습니다. 따라서 일부 디렉토리에는 전면에 있고 javac.exe가 작동하지 않을 수 있습니다.
Dao Lam

36
커맨드 라인을 닫았다가 다시 열면 +1, 그것은 나를 위해 일했습니다!
Sameh Deabes

컴퓨터에 다른 버전의 jdk 및 jre가있는 경우 이치에 맞습니까?
Aaron Liu

이 변수와 그 모든 것을 설정하면서 OS 시스템에 대해 많은 것을 배웠습니다. 감사 남자
Aniket Jadhav

77

이것을 시도하십시오. 나도 그것을 가지고 있었지만 지금은 XP에서 해결되었습니다.

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java

45

set명령을 잘못 입력했습니다 – 뒤에 백 슬래시가 없습니다 C:. 그것은해야한다:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin

1
나는 그 권리를 놓쳤지만 여기에 내 관심사를 게시 할 때 인쇄상의 오류였습니다. 나는 그것을 확인했고 모든 것이 올바르게 철자되었지만 여전히 같은 오류가 발생합니다.
user987137

1
@ user987137. 분명히 무언가가 잘못되었습니다. 지정된 위치에 JDK (JRE가 아니라 JDK)가 설치되어 C:\Program Files (x86)\Java\jdk1.7.0있습니까? 그렇다면 당신이 경우에 어떤 일이 발생 cd C:\Program Files (x86)\Java\jdk1.7.0\bin다음과 javac -version?
Raghuram

3
올바른 경로를 설정했지만 Win XP에서 JDK를 설정할 때도 같은 오류가 발생했습니다. 단순히 명령 프롬프트를 닫았다가 다시 열면 해결됩니다.
Chris J

@ChrisJ-새 명령 프롬프트가 새 세션에서 시작되어 업데이트 된 환경 변수도로드되기 때문입니다.
Cyclonecode

17

명령 프롬프트에서 다음을 실행하십시오. set Path="C:\Program Files\Java\jdk1.7.0_09\bin" 또는 set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

나는 이것을 시도했고 잘 작동합니다.


thx, 이것은 Windows에서 작동했습니다
Csaba

좋은 대답입니다. Windows 10에서 나를 위해 일했습니다
Roger

5

java 명령이 작동 중이고 javac에 문제가있는 경우 그런 다음 먼저 jdk의 bin 디렉토리 javac.exe 파일을 확인하십시오. javac.exe 파일이 존재 JAVA_HOME하면 시스템 변수 로 설정 하십시오.


3

환경 변수를 확인하십시오.

필자의 경우 시스템 변수사용자 계정 변수에 JAVA_HOME이 설정되어 있고 후자는 잘못된 Java 버전 으로 설정되었습니다 . 또한 Path 변수와 동일한 문제가있었습니다.

내 사용자 계정에서 JAVA_HOME을 삭제 경로 변수에서 잘못된 경로를 변수 및 제거가 제대로 작동했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.