javac not working in windows command prompt

JavaWindowsCommand PromptJavac

Java Problem Overview


I'm trying to use javac with the windows command prompt, but it's not working.

After adding the directory "C:\Program Files\Java\jdk1.6.0_16\bin\" to the end of the PATH environment variable, the java command works fine, but using javac gives me the following error:

> 'javac' is not recognized as an internal or external command, operable program or batch file.

Java Solutions


Solution 1 - Java

If you added it in the control panel while your command prompt was open, that won't affect your current command prompt. You'll need to exit and re-open or simply do:

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

By way of checking, execute:

echo %path%

from your command prompt and let us know what it is.

Otherwise, make sure there is a javac in that directory by trying:

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

from the command prompt. You can also tell which executable (if any) is being used with the command:

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

This is a neat trick similar to the which and/or whence commands in some UNIX-type operating systems.

Solution 2 - Java

Windows OS searches the current directory and the directories listed in the PATH environment variable for executable programs. JDK's programs (such as Java compiler javac.exe and Java runtime java.exe) reside in directory "\bin" (where denotes the JDK installed directory, e.g., C:\Program Files\Java\jdk1.8.0_xx). You need to include the "\bin" directory in the PATH.

To edit the PATH environment variable in Windows XP/Vista/7/8:

  1. Control Panel ⇒ System ⇒ Advanced system settings

  2. Switch to "Advanced" tab ⇒ Environment Variables

  3. In "System Variables", scroll down to select "PATH" ⇒ Edit

(( now read the following 3 times before proceeding, THERE IS NO UNDO ))

In "Variable value" field, INSERT "c:\Program Files\Java\jdk1.8.0_xx\bin" (Replace xx with the upgrade number and VERIFY that this is your JDK's binary directory!!!) IN FRONT of all the existing directories, followed by a semi-colon (;) which separates the JDK's binary directory from the rest of the existing directories. DO NOT DELETE any existing entries; otherwise, some existing applications may not run.

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

Screenshot

Solution 3 - Java

After a long Google, I came to know that javac.exe will be inside JDK(C:\Program Files\Java\jdk(version number)\bin) not inside JRE (C:\Program Files (x86)\Java\jre7\bin) "JRE doesn't come with a compiler. It(JRE) is simply a java runtime environment. What you need is the Java development kit." in order to use compiler javac

javac will not work if you are pointing bin inside jre

In order to use javac in cmd , JDK must be installed in your system...

For javac path

path = C:\Program Files (x86)\Java\jre7\bin this is wrong

path = C:\Program Files\Java\jdk(version number)\bin this is correct

Make sure that "javac.exe" is inside your "C:\Program Files\Java\jdk(version number)\bin"

Don't get confused with JRE and JDK both are totally different

if you don't have JDK pls download from this link

https://jdk.java.net/

or

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

reference thread for JDK VS JRE https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre

Solution 4 - Java

I know this may not be your specific error, but I once had a leading space in my path and java would work but javac would not.

For what it's worth, I offer the sage advice: "Examine your Path closely".

Solution 5 - Java

Okay this can not be the case always but many of us have done this mistake in the past and few out of those are still not aware of it, which is, every time you append a path (any path) of any environment variable, you're likely to hit the space bar right after the "semicolon" (as you normally would, after the "period" while typing in an editor).

This will create a leading space in the path e.g " C:\Program Files\Java\jdk1.6.0\bin" and therefore "javac.exe" won't be found by the system.

Solution 6 - Java

Try the solutions here: http://techdem.centerkey.com/2009/05/javahome-command-script.html

These are much more robust to change -- like when you upgrade the JDK or JRE, since there is no hard coded path.

The quick solution (if you don't want to read the blog) is

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

You can then add these lines to a startup/login script.

Solution 7 - Java

I just had to do this to get this to work on windows 7 64.

Open up a command prompt (cmd.exe) and type:

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

Make sure you reopen all running command prompt Windows to get the environment variable updated as well.

Solution 8 - Java

Change the folder "jdk1.7.0_45" "jdk1_7_0_60" and update the path in Windows environment. Otherwise, the path ignores the dot at the front which stands for hidden file and so the folder is not displayed in PATH strings.

Solution 9 - Java

";C:\Program Files\Java\jdk1.6.0\bin" sometime you may forget to put semicolon on last existing path.

Solution 10 - Java

I was having the same problem posted in this title. Java would work, but javac would not in the Windows command prompt (cmd.exe).

For me, it was simply that I had placed a space when adding C:\Program Files\Java\jdk1.8.0\bin to the end of my %PATH% environment variable.
Remove the space between the ; and the next file path.

Solution 11 - Java

I faced the exact same problem that java would work but javac would not on a cmd prompt in Windows 8.

The problem occured because I forgot to remove '>' at the end of the path name, i.e., it was like this:

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

where it was suppose to be like this:

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

Solution 12 - Java

The path will only be set for the administrator account. Therefore it is important to launch command prompt as administrator, if you are not already.

Solution 13 - Java

Ensure you don't allow spaces (white space) in between paths in the Path variable. My problem was I had white space in and I believe Windows treated it as a NULL and didn't read my path in for Java.

Solution 14 - Java

I appreciate this is an old question now but my solution wasn't an answer on here so posting it in case anyone else tries all the rest.

In my case, a previous install of the Java JRE (in ProgramData/Oracle/Java) had a path variable at the top of my list of path variables. The contents of that "Oracle" path had a java.exe but not a javac.exe. I added my full JDK path to the top of the list of path variables, ahead of the "Oracle" one, and it then picked up javac.exe as well as java.

Solution 15 - Java

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

this solution worked to me

Solution 16 - Java

When i tried to make the .java to .class the command Javac didnt work. I got it working by going to C:\Program Files (x86)\Java\jdk1.7.0_04\bin and when i was on that directory I typed Javac.exe C\Test\test.java and it made the class with that tactic. Try that out.

Solution 17 - Java

Give it as "C:\Program Files\Java\jdk1.6.0_16\bin". Remove the backslash it will work

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDom M.View Question on Stackoverflow
Solution 1 - JavapaxdiabloView Answer on Stackoverflow
Solution 2 - JavamikeView Answer on Stackoverflow
Solution 3 - JavaTechDogView Answer on Stackoverflow
Solution 4 - JavaSamView Answer on Stackoverflow
Solution 5 - JavaMalay DesaiView Answer on Stackoverflow
Solution 6 - JavaJasonView Answer on Stackoverflow
Solution 7 - JavaRyan SummeyView Answer on Stackoverflow
Solution 8 - JavaNewDevView Answer on Stackoverflow
Solution 9 - JavaSundararajan wasuvanView Answer on Stackoverflow
Solution 10 - JavaTaitonView Answer on Stackoverflow
Solution 11 - JavaKevinView Answer on Stackoverflow
Solution 12 - Javauser4433410View Answer on Stackoverflow
Solution 13 - JavaTRHUMMELView Answer on Stackoverflow
Solution 14 - JavaNeilView Answer on Stackoverflow
Solution 15 - JavaCristian AgudeloView Answer on Stackoverflow
Solution 16 - JavaSomeoneView Answer on Stackoverflow
Solution 17 - JavavalliView Answer on Stackoverflow