Windows 명령 프롬프트에서 javac가 작동하지 않습니다


132

javacWindows 명령 프롬프트와 함께 사용하려고하는데 작동하지 않습니다.

환경 변수 "C:\Program Files\Java\jdk1.6.0_16\bin\"끝에 디렉토리 를 추가하면 명령이 제대로 작동하지만 사용 하면 다음 오류가 발생합니다.PATHjavajavac

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


답변:


162

명령 프롬프트가 열려있는 동안 제어판에서 추가 한 경우 현재 명령 프롬프트에 영향을 미치지 않습니다. 종료하고 다시 열거 나 간단하게 수행해야합니다.

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

확인하여 다음을 실행하십시오.

echo %path%

명령 프롬프트에서 그 내용을 알려주십시오.

그렇지 않으면 다음을 시도하여 해당 디렉토리에 javac 있는지 확인하십시오 .

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

명령 프롬프트에서. 당신은 또한 말할 수 있는 명령으로 사용되는 실행 파일 (있는 경우) :

for %i in (javac.exe) do @echo %~$PATH:i

이것은 일부 UNIX 유형 운영 체제 의 which및 / 또는 whence명령 과 유사한 깔끔한 트릭 입니다.


11
아 그래, 내가해야 할 일은 명령 프롬프트를 다시 열면 충분했습니다. 감사합니다!
Domenic

1
+1. "(java.exe)의 % i for @echo % ~ $ PATH : i"가 방금 하루를 저장했습니다. 나는 가끔 Windows 사용자 일 뿐이고 c : \ windows \ system :)에 또 다른 숨겨진 java.exe가있을 수 있다는 것을 몰랐습니다
.

1
위의 set path 명령은 Windows 7에서 작동하지 않습니다. set path = "% path %; c : \ program files \ java \ jdk1.6.0_16 \ bin을 사용해야했습니다. Windows 명령 행을 사용하지만 따옴표는 그대로 유지되므로 % path %에 따옴표를 사용하면 완전히 사용할 수 없게됩니다.
user716468

@ user716468, 명령 줄 대신 Windows 에서이 작업을 수행하는 GUI 방법이 있습니다. Windows 7 인 경우 시작 메뉴 검색에 var를 입력하고 환경 변수 편집을 클릭하십시오. Windows XP를 사용하는 경우 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 후 고급 탭으로 이동하여 하단의 환경 변수 버튼을 클릭하십시오. 두 개의 목록 상자가 있습니다. 하단 목록 상자에서 PATH라는 이름을 가진 것을 찾아 편집을 클릭하십시오. 이제 세미콜론 앞에 JDK 경로를 추가 하십시오. 당신은 끝났습니다!
fz_salam

최근 창에서 명령 줄 명령 ""도있다
x29a

87

Windows OS는 현재 디렉토리와 PATH 환경 변수에 나열된 디렉토리에서 실행 가능한 프로그램을 검색합니다. JDK의 프로그램 (예 : Java 컴파일러 javac.exe 및 Java 런타임 java.exe)은 "\ bin"디렉토리에 있습니다 (여기서 JDK 설치 디렉토리 (예 : C : \ Program Files \ Java \ jdk1.8.0_xx)). PATH에 "\ bin"디렉토리를 포함시켜야합니다.

Windows XP / Vista / 7 / 8에서 PATH 환경 변수를 편집하려면

  1. 제어판 ⇒ 시스템 ⇒ 고급 시스템 설정

  2. "고급"탭으로 전환 ⇒ 환경 변수

  3. "시스템 변수"에서 아래로 스크롤하여 "PATH"를 선택합니다. ⇒ 편집

((이제 진행하기 전에 다음 3 번을 읽으 십시오. 실행 취소 없음 ))

"가변 값"필드에서 "c : \ Program Files \ Java \ jdk1.8.0_xx \ bin"INSERT (xx를 업그레이드 번호로 바꾸고 이것이 JDK의 바이너리 디렉토리임을 확인하십시오 !!!) 디렉토리 뒤에 세미콜론 (;)을 붙여 JDK의 이진 디렉토리를 나머지 기존 디렉토리와 구분합니다. 기존 항목을 삭제하지 마십시오. 그렇지 않으면 일부 기존 응용 프로그램이 실행되지 않을 수 있습니다.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

스크린 샷


4 단계의 경우 jre <yournumber>가 아니라 jdk <yournumber>를 선택해야한다는 것을 알았습니다. 그런 다음 다른 모든 것이 잘 작동했습니다.
Morgan Kenyon

단정하고 클리어! 가장 좋은 답변입니다. 나를 위해 일했다.
M_R_K

필자의 경우 4 단계에서 jdk를 열었습니다. 본질적으로 PATH에 대해 C : \ Program Files \ Java \ jdk1.7.0_67 \ bin과 같이했습니다. javac.exe는 jre가 아니라 jdk에 있습니다.
sedeh

:) 나를 위해 작동
라 제쉬 쿠마르 ARUMUGAM

34

긴 Google 후, javac.exe가 JRE (C : \ Program Files (x86) \ Java \ jre7 )가 아닌 JDK (C : \ Program Files \ Java \ jdk (버전 번호) \ bin)에 있음을 알게되었습니다. \ bin) "JRE에는 컴파일러가 포함되어 있지 않습니다. JRE는 단순히 Java 런타임 환경입니다. 필요한 것은 Java 개발 키트입니다." 컴파일러 javac를 사용하기 위해

jre 내부에서 bin을 가리키는 경우 javac가 작동하지 않습니다.

cmd에서 javac를 사용하려면 시스템에 JDK가 설치되어 있어야합니다 ...

javac 경로

경로 = C : \ Program Files (x86) \ Java \ jre7 \ bin 이것이 잘못되었습니다

경로 = C : \ Program Files \ Java \ jdk (버전 번호) \ bin 이것이 맞습니다.

"javac.exe"가 "C : \ Program Files \ Java \ jdk (버전 번호) \ bin" 안에 있는지 확인하십시오 .

JRE와 JDK와 혼동하지 마십시오.

이 링크에서 JDK pls를 다운로드하지 않은 경우

https://jdk.java.net/

또는

http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK와 JRE의 참조 스레드 JDK와 JRE의 차이점은 무엇입니까?


6

나는 이것이 당신의 특정 오류가 아니라는 것을 알고 있지만 한 번 내 경로에 선행 공간이 있었고 java는 작동하지만 javac는 작동하지 않습니다.

그만한 가치가있는 것에 대해, 나는 현명한 조언을 제공합니다 : "경로를 자세히 조사하십시오".


5

여기에서 해결책을 시도하십시오 : http://techdem.centerkey.com/2009/05/javahome-command-script.html

하드 코딩 된 경로가 없기 때문에 JDK 또는 JRE를 업그레이드 할 때와 같이 변경하기가 훨씬 강력합니다.

빠른 솔루션 (블로그를 읽고 싶지 않은 경우)은

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

그런 다음이 줄을 시작 / 로그인 스크립트에 추가 할 수 있습니다.


2
그런 javac를 호출하기 위해 "set PATH = % PATH %; % JAVA_HOME % \ bin"(추가 된 \ bin에 주목)을 사용해야했습니다.
user31389

4

이 작업을 Windows 7 64에서 작동 시키려면이 작업을 수행해야했습니다.

명령 프롬프트 (cmd.exe)를 열고 다음을 입력하십시오.

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

환경 변수도 업데이트하려면 실행중인 모든 명령 프롬프트 Windows를 다시 열어야합니다.


1
클래스 패스 설정을 해제하는 것이 더 좋습니다. CLASSPATH 변수를 사용하지 않겠습니다. 특히 전역 변수이고 여러 JRE에 영향을주는 Windows에서는 그렇지 않습니다.
eckes

4

그래, 항상 그런 것은 아니지만 우리 중 많은 사람들이 과거 에이 실수를 저질렀 고 그중 일부는 여전히 그것을 모르고 있습니다. 즉, 환경 변수의 경로 (경로)를 추가 할 때마다 '세미콜론'바로 다음에 스페이스 바를 칠 가능성이 높습니다 (일반적으로 편집기에서 입력하는 동안 "마침표"뒤).

이 경로에 "C : \ Program Files \ Java \ jdk1.6.0 \ bin"과 같은 선행 공간이 만들어 지므로 시스템에서 "javac.exe"를 찾을 수 없습니다.


2

"jdk1.7.0_45" "jdk1_7_0_60"폴더를 변경하고 Windows 환경에서 경로를 업데이트하십시오. 그렇지 않으면 경로에서 숨겨진 파일을 나타내는 앞의 점을 무시하므로 폴더가 PATH 문자열에 표시되지 않습니다.


0

"; C : \ Program Files \ Java \ jdk1.6.0 \ bin"언젠가는 기존 경로에 세미콜론을 놓는 것을 잊을 수도 있습니다.


0

java가 작동하는 것과 똑같은 문제에 직면했지만 javac는 Windows 8의 cmd 프롬프트에서 작동하지 않습니다.

'>'경로 이름 끝에서 제거하는 것을 잊었 기 때문에 문제가 발생했습니다 . 즉, 다음과 같습니다.

C:\Program Files\Java\jdk*\bin>

다음과 같이 가정했습니다.

C:\Program Files\Java\jdk*\bin

0

경로는 관리자 계정에 대해서만 설정됩니다. 따라서 관리자 권한이 아닌 경우 관리자 권한으로 명령 프롬프트를 시작해야합니다.


0

Path 변수의 경로 사이에 공백 (공백)을 허용하지 마십시오. 내 문제는 공백이 있었고 Windows가 NULL로 취급하고 Java의 경로를 읽지 않았다고 생각합니다.


0

이 제목에 동일한 문제가 게시되었습니다. Java는 작동하지만 javacWindows 명령 프롬프트 ( cmd.exe)에는 없습니다.

나를 위해 환경 변수 C:\Program Files\Java\jdk1.8.0\bin의 끝에 추가 할 때 공간을 두는 것이 간단했습니다 %PATH%. 다음 파일 경로
사이의 공간을 제거하십시오 ;.


0

나는 이것이 오래된 질문이라고 고맙지 만 내 솔루션은 여기에 대한 답변이 아니므로 다른 누군가가 나머지를 시도 할 경우를 대비하여 게시하십시오.

필자의 경우 Java JRE의 이전 설치 (ProgramData / Oracle / Java)에는 경로 변수 목록 맨 위에 경로 변수가있었습니다. 해당 "Oracle"경로의 내용에는 java.exe가 있지만 javac.exe는 없습니다. "Oracle"보다 앞서 전체 JDK 경로를 경로 변수 목록의 맨 위에 추가 한 다음 java뿐만 아니라 javac.exe도 선택했습니다.


0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

솔루션은 저에게 효과적이었습니다


링크를 제공하는 대신 답변에 직접 주석을 추가하는 것이 좋습니다. 링크가 손상 될 수 있습니다. 안부
YakovL

-3

.java를 .class로 만들려고 할 때 Javac 명령이 작동하지 않았습니다. C : \ Program Files (x86) \ Java \ jdk1.7.0_04 \ bin으로 이동하여 해당 디렉토리에 있었을 때 Javac.exe C \ Test \ test.java를 입력하고 클래스를 만들었습니다. 술책. 사용해보십시오.


-7

"C : \ Program Files \ Java \ jdk1.6.0_16 \ bin"으로 지정하십시오. 백 슬래시를 제거하면 작동합니다.


2
나는 그것이 맞지 않다고 생각합니다. 내 경로를 "C : \ Program Files \ Java \ jdk1.6.0_16 \ bin \"(후행 슬래시 포함) 이외의 것으로 설정할 수 있으며 여전히 잘 작동합니다.
paxdiablo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.