Javac Version Not Working

Posted By admin On 12/01/22
  1. Javac Is Not Recognized As Internal Comma…
  2. Javac Not Working Windows 10
  3. Javac Not Working In Cmd
  4. Java Version Not Working
Active11 months ago

I am experiencing an error while trying to compile Java programs.

I am on Windows (this is a Windows-specific problem) and I have the latest JDK installed.

  1. It still won’t work for me, is says Javac not recognized as internal or external command still. I’ve reopended the cmd-window and don’t know what’s wrong. I thought I could answer the same questions someone else got, maybe you could see whats wrong or have another idea of what I can do.
  2. Feb 23, 2017  There are many but people prefer 1. Eclipse Use it both are great but i like NetBeans more Javac is not working thats means your path is not sent See when we run some command we need to tell operating system the location of command We.

Javac is the utility for compiling java applications. When compiling a java program from command line, the most common issue people get into is “Javac is not recognized as internal or external command’.

I have attempted a solution involving the PATH variable, but the error persists.

Console output:

MultiplyByZer0
2,7162 gold badges25 silver badges43 bronze badges
user987137user987137
1,2272 gold badges9 silver badges3 bronze badges

closed as off-topic by Jason C, animusonMar 29 '14 at 16:21

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • 'This question was caused by a problem that can no longer be reproduced or a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers. This can often be avoided by identifying and closely inspecting the shortest program necessary to reproduce the problem before posting.' – animuson
If this question can be reworded to fit the rules in the help center, please edit the question.

6 Answers

For experienced readers:

  1. Find the Java path; it looks like this: C:Program FilesJavajdkxxxxbin
  2. Start-menu search for 'environment variable' to open the options dialog.
  3. Examine PATH. Remove old Java paths.
  4. Add the new Java path to PATH.
  5. Edit JAVA_HOME.
  6. Close and re-open console/IDE.

Welcome!

You have encountered one of the most notorious technical issues facing Java beginners: the 'xyz' is not recognized as an internal or external command... error message.

In a nutshell, you have not installed Java correctly. Finalizing the installation of Java on Windows requires some manual steps. You must always perform these steps after installing Java, including after upgrading the JDK.

(If you already understand this, feel free to skip the next three sections.)

When you run javac HelloWorld.java, cmd must determine where javac.exe is located. This is accomplished with PATH, an environment variable.

An environment variable is a special key-value pair (e.g. windir=C:WINDOWS). Most came with the operating system, and some are required for proper system functioning. A list of them is passed to every program (including cmd) when it starts. On Windows, there are two types: user environment variables and system environment variables.

You can see your environment variables like this:

The most important variable is PATH. It is a list of paths, separated by ;. When a command is entered into cmd, each directory in the list will be scanned for a matching executable.

On my computer, PATH is:

When you run javac HelloWorld.java, cmd, upon realizing that javac is not an internal command, searches the system PATH followed by the user PATH. It mechanically enters every directory in the list, and checks if javac.com, javac.exe, javac.bat, etc. is present. When it finds javac, it runs it. When it does not, it prints 'javac' is not recognized as an internal or external command, operable program or batch file.

You must add the Java executables directory to PATH.

(If you already understand this, feel free to skip this section.)

When downloading Java, you are offered a choice between:

  • The Java Runtime Environment (JRE), which includes the necessary tools to run Java programs, but not to compile new ones – it contains java but not javac.
  • The Java Development Kit (JDK), which contains both java and javac, along with a host of other development tools. The JDK is a superset of the JRE.

You must make sure you have installed the JDK. If you have only installed the JRE, you cannot execute javac because you do not have an installation of the Java compiler on your hard drive. Check your Windows programs list, and make sure the Java package's name includes the words 'Development Kit' in it.

(If you weren't planning to anyway, feel free to skip this section.)

Several other answers recommend executing some variation of:

Do not do that. There are several major problems with that command:

  1. This command erases everything else from PATH and replaces it with the Java path. After executing this command, you might find various other commands not working.
  2. Your Java path is probably notC:Program FilesJavajdk1.7.0_09bin – you almost definitely have a newer version of the JDK, which would have a different path.
  3. The new PATHonly applies to the current cmd session. You will have to reenter the set command every time you open Command Prompt.

Points #1 and #2 can be solved with this slightly better version:

But it is just a bad idea in general.

The right way begins with finding where you have installed Java. This depends on how you have installed Java.

Exe installer

You have installed Java by running a setup program. Oracle's installer places versions of Java under C:Program FilesJava (or C:Program Files (x86)Java). With File Explorer or Command Prompt, navigate to that directory.

Each subfolder represents a version of Java. If there is only one, you have found it. Otherwise, choose the one that looks like the newer version. Make sure the folder name begins with jdk (as opposed to jre). Enter the directory.

Then enter the bin directory of that.

You are now in the correct directory. Copy the path. If in File Explorer, click the address bar. If in Command Prompt, copy the prompt.

The resulting Java path should be in the form of (without quotes):

Zip file

You have downloaded a .zip containing the JDK. Extract it to some random place where it won't get in your way; C:Java is an acceptable choice.

Then locate the bin folder somewhere within it.

You are now in the correct directory. Copy its path. This is the Java path.

Remember to never move the folder, as that would invalidate the path.

That is the dialog to edit PATH. There are numerous ways to get to that dialog, depending on your Windows version, UI settings, and how messed up your system configuration is.

Try some of these:

  • Start Menu/taskbar search box » search for 'environment variable'
  • Win + R » control sysdm.cpl,3
  • Win + R » SystemPropertiesAdvanced.exe » Environment Variables
  • File Explorer » type into address bar Control PanelSystem and SecuritySystem » Advanced System Settings (far left, in sidebar) » Environment Variables
  • Desktop » right-click This PC » Properties » Advanced System Settings » Environment Variables
  • Start Menu » right-click Computer » Properties » Advanced System Settings » Environment Variables
  • Control Panel (icon mode) » System » Advanced System Settings » Environment Variables
  • Control Panel (category mode) » System and Security » System » Advanced System Settings » Environment Variables
  • Desktop » right-click My Computer » Advanced » Environment Variables
  • Control Panel » System » Advanced » Environment Variables

Any of these should take you to the right settings dialog.

If you are on Windows 10, Microsoft has blessed you with a fancy new UI to edit PATH. Otherwise, you will see PATH in its full semicolon-encrusted glory, squeezed into a single-line textbox. Do your best to make the necessary edits without breaking your system.

Javac version not working on iphone

Look at PATH. You almost definitely have two PATH variables (because of user vs. system environment variables). You need to look at both of them.

Check for other Java paths and remove them. Their existence can cause all sorts of conflicts. (For instance, if you have JRE 8 and JDK 11 in PATH, in that order, then javac will invoke the Java 11 compiler, which will create version 55 .class files, but java will invoke the Java 8 JVM, which only supports up to version 52, and you will experience unsupported version errors and not be able to compile and run any programs.) Sidestep these problems by making sure you only have one Java path in PATH. And while you're at it, you may as well uninstall old Java versions, too. And remember that you don't need to have both a JDK and a JRE.

If you have C:ProgramDataOracleJavajavapath, remove that as well. Oracle intended to solve the problem of Java paths breaking after upgrades by creating a symbolic link that would always point to the latest Java installation. Unfortunately, it often ends up pointing to the wrong location or simply not working. It is better to remove this entry and manually manage the Java path.

Now is also a good opportunity to perform general housekeeping on PATH. If you have paths relating to software no longer installed on your PC, you can remove them. You can also shuffle the order of paths around (if you care about things like that).

Javac Is Not Recognized As Internal Comma…

Now take the Java path you found three steps ago, and place it in the system PATH.

It shouldn't matter where in the list your new path goes; placing it at the end is a fine choice.

If you are using the pre-Windows 10 UI, make sure you have placed the semicolons correctly. There should be exactly one separating every path in the list.

There really isn't much else to say here. Simply add the path to PATH and click OK.

While you're at it, you may as well set JAVA_HOME as well. This is another environment variable that should also contain the Java path. Many Java and non-Java programs, including the popular Java build system Gradle, will throw errors if it is not correctly set.

If JAVA_HOME does not exist, create it as a new system environment variable. Set it to the same Java path you added to PATH.

Remember to edit JAVA_HOME after upgrading Java, too.

Though you have modified PATH, all running programs, including cmd, only see the old PATH. This is because the list of all environment variables is only copied into a program when it begins executing; thereafter, it only consults the cached copy.

There is no good way to refresh cmd's environment variables, so simply close Command Prompt and open it again. If you are using an IDE, close and re-open it too.

Javac Not Working Windows 10

MultiplyByZer0
2,7162 gold badges25 silver badges43 bronze badges
carlos c.carlos c.
4,0831 gold badge9 silver badges2 bronze badges
Sotirios Delimanolis
222k43 gold badges545 silver badges613 bronze badges
Ahmad Azwar AnasAhmad Azwar Anas

You mistyped the set command – you missed the backslash after C:. It should be:

Javac Not Working In Cmd

MultiplyByZer0

Java Version Not Working

2,7162 gold badges25 silver badges43 bronze badges
RaghuramRaghuram
45.8k9 gold badges93 silver badges112 bronze badges

Run the following from the command prompt: set Path='C:Program FilesJavajdk1.7.0_09bin'or set PATH='C:Program FilesJavajdk1.7.0_09bin'

I have tried this and it works well.

Dacre Denny
20.6k4 gold badges15 silver badges35 bronze badges
fresherfresher

If java command is working and getting problem with javac. then first check in jdk's bin directory javac.exe file is there or not.If javac.exe file is exist then set JAVA_HOME as System variable.

Erwin
4,5463 gold badges27 silver badges40 bronze badges
Umrao RawatUmrao Rawat

Check your environment variables.

In my case I had JAVA_HOME set in the System variables as well as in my User Account variables and the latter was set to a wrong version of Java. I also had the same problem with the Path variable.

Javac not working in cmd

After deleting JAVA_HOME from my User Account variables and removing the wrong path from the Path variable it worked correctly.

wabisabitwabisabit

Not the answer you're looking for? Browse other questions tagged javapathenvironment-variablescommand-promptjavac or ask your own question.

Archived

I'm a freshmen in college in my first cs class so please explain like I'm somewhat stupid. I installed jdk but then typing javac into cmd but then 'javac is not recognized as an internal or external command' came up. I set a path in environmental variables named PATH with the variable

C:Program FilesJavajdk1.8.0bin

Now when I type into cmd: javac HelloWorld.java

it tells me

javac: file not found: HelloWorld.java

That is the file name with correct capitalization and it is saved in my documents. I'm searching in my C: drive, which is where it is saved. I have no idea what else to do.

EDIT: I closed an reopened cmd and I get 'javac is not recognized as an internal or external command' again

EDIT 2: I got everything working. I had to redownload JDK and reset the path, then i had to change directories. Apparently my computer has multiple user folders and only 1 user and im just going to ignore it. Thank you to everyone who helped!

8 comments