Windows environment variable resolution error - java

I am trying to put the JAVA JDK path into the Windows PATH environment variable.
I changed/inserted the appropriate variables and got the command javac to be working yesterday, but when I tried the same thing today, I am getting the command not recognized error.
Here are the values of the relevant variables (on a fresh cmd instance):
>> echo %JAVA_HOME%
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_101
>> echo %PATH%
C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;C:\Users\anmol\AppData\Local\Programs\Python\Python35\Scripts\;C:\Users\anmol\AppData\Local\Programs\Python\Python35\;C:\Users\anmol\AppData\Local\Programs\Python\Launcher\
I tried to avoid the spaces present in 'Program Files' by writing JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_101, but the error persisted.
Also, if I open a cmd and type set path=%JAVA_HOME%\bin;%path% and then in the same session type javac, it is recognized correctly.
Can anyone tell what is going on and how to set the PATH correctly?

You have modified PATH with the set command, which applies the changes to the current terminal. To make it a persistent system wide setting, use setx instead.
You'll need both, PATH and JAVA_HOME in the system environment.
Note that ` does not modify the current terminal's environment settings:
NOTE: 1) SETX writes variables to the master environment in the registry.
2) On a local system, variables created or modified by this tool
will be available in future command windows but not in the
current CMD.exe command window.
What has happened in your case? You have set the PATH environment variable at a time where JAVA_HOME was not known yet. In that case, %JAVA_HOME% becomes part of PATH literally. The following example demonstrates that:
C:\>set X=%A%
C:\>set A=something
C:\>set X
X=%A%
C:\>set B=something
C:\>set X=%B%
C:\>set X
X=something
To fix it, set JAVA_HOME using setx, close the terminal and open a new one. Then use setx to set PATH, close the terminal and open a new one.
or
set JAVA_HOME using setx, set JAVA_HOME using set to update the console. Then use setx to set PATH, close the terminal and open a new one.

Related

How to get java command running?

When working with any command line (windows-cmd, git bash, ..), no Java commands are working.
I executed java -version and nothing happens. I can type again.
I have set my JAVA_HOME variable to C:/Users/myName/Java/jdk1.8
and I have also added %JAVA_HOME%\bin to my Path variable.
It's not, that the command does not get recognised. It's just that nothing happens.
I could probably run the java.exe command directly, but I wanna fix the env variable.
Can someone help?
Best regards
Try this (Windows):
Locate your JDK/JRE binary - Usually the path for your JDK/JRE bin (On Windows) is:
Your OS Drive(C or D etc):\Program Files\Java\jdk[version]\bin. After you've located it, Copy your path to your clipboard.
Search for "Environment Variables" on windows.
Create a new User variable name it (usually named "JAVA_HOME") and copy your path as a value.
Now in System variables locate a variable named "Path" and add the same value set in JAVA_HOME.
Close and then reopen the CMD.
If this solution does not work, reinstall java. You can uninstall through:
Control Panel -> Programs -> Under Programs and Features -> Uninstall a program.

Javac not recognised even after setting variable path, Windows 10?

I'm getting an error when typing javac in command prompt.
C:\Users\HP>javac
javac is not recognized as an internal or external command, operable program or batch file.
C:\Users\HP>set path
path=C:\Program Files\Java\jdk-10\bin;C:\Program Files\Java\jre-10\bin\javaw.exe;C:\Program Files\Java\jdk-10\bin;C:\Program Files\Java\jre-10\bin;
PATHEXT=C:\Program Files (x86)\Documents;
I have already set Path in both system and user scope environment varible?
You may set 2 system variable from console:
set JAVA_HOME="c:\Program Files\Java\jdk1.8.0_144"
set PATH=%JAVA_HOME%\bin;%PATH%
then your command "javac" will be found.
The PATH variable looks corrupted. Moreover, the PATHEXT variable is totally confused. Their default value in Windows 7/10/2008 (assuming the system drive is C:) should be as follows:
PATH C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;{plus program paths}
PATHEXT .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH; .MSC
Check output from SET PATH in a freshly open cmd window. If path and pathext look as above then use (modify directory names to match current Java version):
set "JAVA_HOME=C:\Program Files\Java\jre-9.0.4"
set "PATH=%JAVA_HOME%\bin;%PATH%"
Above setting is temporary (would last only for current cmd session). For persistent solution, there are more tutorials on the net e.g. How To Set Java Path & Java Home Variables (Windows, MacOS, Ubuntu).
Try out the following solutions.
Close your current cmd and Open a new cmd.exe
Restart the computer
NOTE: If cmd is open when you set the environment variables, then, that property will not be available until unless you open new cmd.
On Windows 10, the problem of 'javac is not recognized ...' can be fixed in these 4 steps:
Step 1: Install JDK to specific path (Example: C:\jdk-15)
Step 2: Setup JAVA_HOME environment variable to the installation folder
Windows --> Advanced settings --> Environment variables --> System Variable
--> Add new variable
JAVA_HOME = C:\jdk-15
Step 3: Prefix JAVA_HOME\bin to PATH variable of Windows
Windows --> Advanced settings --> Environment variables --> System Variables
--> Update PATH variable
PATH = JAVA_HOME\bin;..... old value of PATH variable ....
Step 4: Try the javac and java commands in new command window
Note: Already opened command windows will not take the new values of JAVA_HOME or PATH. The test needs to be done in new window opened after the environment variables are changed and saved.
C:\Users\user1> javac -version
C:\Users\user1> java -version

Apache Ant installation Windows 7

When I do ant -version on command line, it says not recognized. Any ideas on how to fix? I'm trying to make a build.xml for a Java project.
You have set JAVA_HOME and ANT_HOME as User environment variable. The path you set is in System environment variable.
You can fix it by many ways. One way will be to define JAVA_HOME and ANT_HOME in System Environment setting.
Another way will be to modify PATH variable in user environment section.
Make sure your JAVA_HOME and ANT_HOME and PATH are set correctly.
ANT_HOME is used by the launcher script for finding the libraries.
JAVA_HOME is used by the launcher for finding the JDK/JRE to use. (JDK is recommended as some tasks require the java tools.) If not set, the launcher tries to find one via the %PATH% environment variable.
PATH is set for user convenience. With that set you can just start ant instead of always typing the/complete/path/to/your/ant/installation/bin/ant.
Set these variables correctly and open a new cmd window (don't use old cmd window, please open new window)
type echo %PATH% , should show java and ant
Open command window(cmd) and type
java -version
If this shows java version , this means java is in your path and working.
finally type ant -version

JAVA_HOME is not recognized as an internal/external command

I've tried just about everything but it will not recognize it.
I have the latest version of JDK installed, the path is located at "C:\Program Files\Java\jdk1.8.0_25". This is what I'm using for my "variable value" field when I add the new variable "JAVA_HOME"..
I also have a %JAVA_HOME%\bin; in my path variable. I've restarted multiple times, making small changes..
Help me :(
Keep in mind I don't have much of a clue of what I'm doing.. So I could be going about it completely wrong.. Running it in cmd
Change the path value %JAVA_HOME%\bin, instead of set this
C:\Program Files\Java\jdk1.8.0_25\bin
After setting that, open command prompt and check whether you have set JAVA_HOME correctly.
echo %JAVA_HOME%
java
echo %JAVA_HOME% will print the location where java installed and java will show the usage of java.
See here how to set JAVA_HOME

Tomcat 6 JAVA_HOME

I try to set the JAVA_HOME path as my Tomcat server is looking for it. I am trying to set it but it doesn't seem to work and causes an error when I do. I am trying to set the JAVA in the setclasspath.bat using
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
This is at the start of the setclasspath.bat
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit
When I set this and run "startup.bat start" it displays
Files was unexpected at this time
Can you help me?
Note: I realise this is already quite an old question, but many of the answers posted here are either incomplete or inaccurate.. Hopefully this will help save a few headaches.
Firstly: Tomcat does not need a JDK to run, it will work just fine with a JRE, as long as it knows it's a JRE.
Secondly, the error from the original question is coming from an issue with syntax of the set JAVA_HOME=... command. Apache themselves could handle it better with stripping and adding " quote marks.
Also, I would highly recommend creating a setenv.bat file in the bin folder. It's absent by default, so if you don't already have one, create it and add your set JAVA_HOME=... or set JRE_HOME=... lines there.
Run with JRE
As per running.txt:
The JRE_HOME variable is used to specify location of a JRE. The
JAVA_HOME variable is used to specify location of a JDK.
Using JAVA_HOME provides access to certain additional startup options
that are not allowed when JRE_HOME is used.
If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
So, to startup this way, you'll need the following:
set "JAVA_HOME="
set "JRE_HOME=C:\Program Files (x86)\Java\jre7"
Clearing the JAVA_HOME variable is a failsafe, but it's not really required. As per the docs, Tomcat will try use the JRE variable first anyway.
Solution for Issue in Question
Take special note the position of the quotation marks. This way keep the entire string together in one variable, without including the quotation marks in the variable content itself.
For example:
set %TEST%="hello"
echo "%TEST%"
Will output ""hello"".
set "%TEST%=hello"
echo "%TEST%"
Will output "hello".
So, the startup batch file script was trying to use ""C:\Program Files (x86)\Java\jre7"", in which the first non-escaped space is between "Program" and "Files".
As already pointed out, removing the quotation marks (in this particular case at least) would work, but it's dangerous to rely on that. Rather play it safe from the start and wrap the variable name and value in quotation marks.
I had the same problem on Windows 7 with the following definition (I put it in a setenv.bat file in the jdk bin folder as specified by tomcat 7's RUNNING.txt.
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
I just tried removing the double quotes altogether:
set JAVA_HOME=C:\Program Files (x86)\Java\jre7
And tomcat then started.
First, install java and locate the instalation path.
Locate the tomcat installation path and find the startup.bat in \bin
Open startup.bat and add below(example) lines just after setlocal and before rem Guess CATALINA_HOME if not defined
:: JAVA
set JAVA_HOME=D:\thushara_data\Java\jdk1.8.0_73
set PATH=%JAVA_HOME%\bin;%PATH%
Now try to re-run startup.bat
Place the path in quotes:
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
The error is due to the fact that it's parsing the Files in Program Files as a separate parameter, which SET doesn't expect. Why SET isn't reading it properly I can't say without knowing more about what OS you're using, what command shell you're running Tomcat from, and so on.
If not able to set the variables manually:
to set JAVA_HOME and JRE_HOME
go to advance system setting and click on environment variables
under system variables click
new variable name : JAVA_HOME
variable value : [path of jdk]C:\Program Files\Java\jdk1.8.0_181 and click ok
similarly add JRE_HOME
click new variable name : JRE_HOME
variable value : [path of jre]C:\Program Files\Java\jre1.8.0_181
click Ok > Ok > Ok
You are pointing to a JRE. You need to point to a JDK, which given the location of your JRE might be something like C:\Program Files (x86)\Java\jdk1.6.0_26 or similar. Or, if you only have a JRE installed, you'll need to install a full JDK. Tomcat needs to be able to compile JSPs into .class files, which a JRE can't do.
The reason why your command failed is because it has white spaces between 'Program Files (x86)' and so it starts reading the command from 'Files (x86)'. So instead we put it in between double quotes such as the following.
try this..
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
Try
https://askubuntu.com/questions/446294/how-to-start-tomcat7-when-catalina-sh-does-not-work
It can give you some insight even though it's not Windows it still looks for those shell scripts except their extensions in Window is .bat not .sh
You Can Also Try This For jre1.8v:
Open cmd In Tomcat Server Folder And Enter Command
set "JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_45"
Then Enter Command cd bin
Then To Start Tomcat Server Enter Command startup
To Stop Tomcat Server Enter Command shutdown
If It Fails To Start Although You Can Run Command: cd startup.bat

Categories

Resources