I try to set JAVA_HOME variable on an ubuntu server. I get the Java path with this command
which java
/usr/bin/java
I set the result in /etc/environment
JAVA_HOME="/usr/bin/java"
When I try to run a mvn command I get this error
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/bin/java/bin/java
You should not set JAVA_HOME to /usr/bin/java, because that's just a symbolic link to the java executable, which points to where the real executable is.
JAVA_HOME should point to the Java installation directory, and not to the java executable (or a link to the executable).
Find out where your Java installation directory is and then set JAVA_HOME to that directory (and not to the java executable). If you installed Java using Ubuntu's package management system, then the Java home directory is probably one of the subdirectories in /usr/lib/jvm.
Per the Oracle site:
export JAVA_HOME=jdk-install-location
export PATH=$JAVA_HOME/bin:$PATH
You can add these lines into your ~/.bash_profile (or ~/.bashrc), and then refresh using source ~/.bash_profile
Related
I have the JDK 10.0.2 installed, have the cmd opened in the folder of the class files of my program and try the command: javap Simulation.class .
I get the error that the command javap is not found. What do I do wrong?
You must have your $JAVA_HOME/bin directory added to system PATH for javap command to be available without it's absolute path.
Alternatively you can call javap using the absolute path:
/usr/lib/.../bin/javap Simulation.class
Assuming you are on Windows, check in your environment variable PATH whether path to Java executables is set.
Ex. If you have installed Java on path,say, C:\Program Files\Java\jdk-10
Then you have to add C:\Program Files\Java\jdk-10\bin to your PATH environment variable to be able to execute java commands from anywhere on command line.
References for Oracle Docs
https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-DAF345BA-B3E7-4CF2-B87A-B6662D691840
https://www.java.com/en/download/help/path.xml
On a sidenote, recommend you to move to Java 11 or 17 now that Java 10 is no longer supported. The above instructions would still remain same.
append $JAVA_HOME/bin to system $PATH variable. for example on linux
JAVA_HOME= "path of java installation on system"
export PATH = $JAVA_HOME/bin:$PATH
Open the control panel and type envir in search bar.
Click on edit the system environment variables.
Click on environment variables in the advanced system properties.
Click on path mentioned in user variables.
Edit the path, and click new and paste the path of java jdk.
In my system, the path is C:\Program Files\Java\jdk-17.0.2\bin, it could be different for your system.
Click ok, the problem must be solved now.
I installed ant in my system, when I run ant command, I get following error:
Error: JAVA_HOME is not defined correctly. We cannot execute
/usr/lib/jvm/java-6-sun/bin/bin/java
Please suggest what should I do?
Set the environment variable JAVA_HOME to the installation directory of your JDK, which is: /usr/lib/jvm/java-6-sun
It looks like you have set it to /usr/lib/jvm/java-6-sun/bin (note the /bin at the end); the ant command appends another /bin so that you get .../bin/bin/java which is incorrect.
In your Java installation directory, u can see a jre subdirectory that contains the bin directory that contains java and related executables.
So you should probably be setting JAVA_HOME to /usr/lib/jvm/jdk/jre rather than /usr/lib/jvm/jdk.
I have problem with MAVEN path
i have already set all the path but not working please see the below path
Path
....;C:\Program Files\Java\jdk1.6.0_20\bin;D:\apache-maven-3.2.1\bin
JAVA_HOME
C:\Program Files\Java\jdk1.6.0_20
MAVEN_HOME
D:\apache-maven-3.2.1
When i try to run mvn --version it will give error of JAVA_HOME please see the error
Error: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "C:\Program Files\Java\jdk1.6.0_20\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
But javac is working fine
JAVA_HOME needs to point to the folder which contains bin/, lib/, etc.
Your variable points inside of Java's home folder.
Change JAVA_HOME C:\Program Files\Java\jdk1.6.0_20\bin to C:\Program Files\Java\jdk1.6.0_20.
PATH and JAVA_HOME are two different things:
With PATH you tell the system where to search for commands. There you should have
PATH=...;C:\Program Files\Java\jdk1.6.0_20\bin;
With JAVA_HOME you define where your Java has been installed. Applications using JAVA_HOME add the bin and/or lib directories. There you should have
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20
Try the following in a DOS-Box:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20
set MAVEN_HOME=D:\apache-maven-3.2.1
set PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin
mvn --version
Once you have identified the JRE installation path:
Right-click the My Computer icon on your desktop and select Properties.
Click the Advanced tab.
Click the Environment Variables button.
Under System Variables, click New.
Enter the variable name as JAVA_HOME.
Enter the variable value as the installation path for the Java Development Kit.
If your Java installation directory has a space in its path name, you should use the shortened path name (e.g. C:\Progra~1\Java\jre6) in the environment variable instead.
Icon
Note for Windows users on 64-bit systems
Progra~1 = 'Program Files'
Progra~2 = 'Program Files(x86)'
Click OK.
Click Apply Changes.
Close any command window which was open before you made these changes, and open a new command window. There is no way to reload environment variables from an active command prompt. If the changes do not take effect even after reopening the command window, restart Windows.
If you are running the Confluence EAR/WAR distribution, rather than the regular Confluence distribution, you may need to restart your application server.
You required to set or make sure about 3 variables environment behaviour:
1. M2_HOME: set this environment variable to point out to apache maven directory. Note: must not be point to bin directory.
JAVA_HOME: This environment variable must be point to jdk folder, not include bin directory.
path: your system/user path variable must be pointing to bin directory of java environment.
this works fine for me.
first set all these things
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20
set MAVEN_HOME=D:\apache-maven-3.2.1
set PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin
check
mvn --version
if still not working then delete path in environment variables again create it as
PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin
close previously opened cmd prompt
open new cmd
and check
mvn --version
I have the following on my .bashrc:
JAVA_HOME="/usr/bin/java"
GRAILS_HOME="/root/grails"
PATH=$PATH:$JAVA_HOME:$GRAILS_HOME/bin
export JAVA_HOME
export GRAILS_HOME
export PATH
However, when I execute > grails in the terminal, I get:
root#localhost:~# grails
grails: JAVA_HOME is not a directory: /usr/bin/java
when I tried to replace to
JAVA_HOME="/usr/share/java"
then the outcome is:
root#localhost:~# grails
grails: JAVA_HOME is not defined correctly; can not execute: /usr/share/java/bin/java
what am I missing in there?
I would expect JAVA_HOME to contain the bin directory containing java (and others).
So clearly those two options you've selected are not correct.
Looking at my Ubuntu installation, I have numerous Java packages under /usr/lib/jvm, and I would select an appropriate one there e.g.
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
Make sure to source the changed file eg: $ source [filename of the changes made] in your example .bashrc
I have downloaded both Java jdk1.7.0_06 and Java jre7. and i added the following system variable JAVA_HOME C:\Program Files\Java\jdk1.7.0_06\bin to my windows 7. But when I type the following in the CMD command line on my windows 7 C:\activiti-5.10\activiti-5.10\setup>ant demo.start to run a demo application I got the following error in the command line '
"java.exe"' is not recognized as an internal or external command, operable program or batch file
So does anyone know how i can solve this problem ?
BR
If you look at the "ant.bat" file, you will see that it looks for the "java" command in the following way:
If the %JAVACMD% environment variable is set, then it uses that.
Otherwise, if the %JAVA_HOME% environment variable is set, it tries to use %JAVA_HOME%\bin\java.exe
Otherwise, it tries to use java.exe; i.e. it will look on your %PATH%.
In your case, you have %JAVA_HOME% set ... but set to the Java installation's "bin" directory, not to the root of the installation. So the Ant.bat script looks in the wrong place for java.exe.
Just set %JAVA_HOME% correctly, and it should work.
JAVA_HOME C:\Program Files\Java\jdk1.7.0_06
As you can see from the above, you do not need to have the Java "bin" directory on your %PATH% for Ant to work, but it is a good idea to set it anyway. That way you can run the Java commands simply from the command line.
The setting of %CLASSPATH% is not relevant to this problem. Indeed, unless the build.xml file is broken, Ant will ignore your %CLASSPATH% environment variable.
You need to put the file java.exe in your PATH variable but the JRE in JAVA_HOME
JAVA_HOME is the path of JDK root folder.eg: C:\Program Files\Java\jdk1.7.0_06 but path define C:\Program Files\Java\jdk1.7.0_06\bin
JAVA_HOME C:\Program Files\Java\jdk1.7.0_06
JRE_HOME C:\Program Files\Java\jre1.7.0_06
path = C:\Program Files\Java\jdk1.7.0_06\bin;C:\Program Files\Java\jre1.7.0_06\bin
Typically JAVA_HOME should be the parent directory of the "bin" folder.(jre or jdk)
In this case ant expects the java to be from the JDK.
try following in a cmd window
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_06
set path="%JAVA_HOME%/bin;%path%;
ant
(side note: adding java.exe to path is not a requirement for ant; it is a convenience thing for the user)
Just delete the following set of files from your %windir/System32 folder. Actually deleting java.exe is enough but for consistency sake just delete all the java related binaries.
java.exe
javaw.exe
javaws.exe
Actually oracle windows installer places a copy of these files into %windir/System32 folder (which I don't understand why) but looks like they are not needed (as they are available anyway under JDK folder where you install them).
I have tried all the various solutions posted in the SO and other forums as well but none of them worked for me. I have also set all the relevant environment variables (JAVA_PATH, CLASS_PATH etc) correctly as well. Finally this is the only solution that has worked for me.
Go to the \squirrel-sql-3.9.0>squirrel-sql.bat .open that squirrel-sql.bat in Notepad and comment out the existing logic which is
=======================================
if exist "%IZPACK_JAVA%\bin\javaw.exe" (
set LOCAL_JAVA=%IZPACK_JAVA%\bin\javaw.exe
) else (
set LOCAL_JAVA=javaw.exe
)
echo Using java: %LOCAL_JAVA%
=================================
and add the below logic
#echo off
set LOCAL_JAVA=C:\Program Files (x86)\Java\jre7\bin\javaw.exe
echo Using java: %LOCAL_JAVA%
================================
make sure you add the correct path of javax.exe while adding above logic set LOCAL_JAVA=
and start the .bat file from CMD ..that's it. It should work. It worked for me.
I started getting this error in Android Studio after I updated it to version "Electric Eel".
It happened because Android Studio has changed where they put their JRE:
it used to be C:\Program Files\Android\Android Studio\jre
but now it is C:\Program Files\Android\Android Studio\jbr
To fix:
updated my JAVA_HOME environment variable to point to the new java location (C:\Program Files\Android\Android Studio\jre)
and then restarted Android Studio, and now it is fixed.
I agree with the above explanation but if the problem still persists try setting:
CLASSPATH = C:\Program Files\Java\jdk1.7.0_06\bin