Setting java home - java

I'm trying to use the command "ant build".The message says java home is not defined correctly we cannot execute /usr/bin/java//bin/java <notice the 2 slashes>
If i use the command echo $JAVA_HOME it returns usr/bin/java . What needs changing here?

The $JAVA_HOME variable does not refer to the java executable, but to the parent directory of the bin/java executable itself. This is the reason Ant complains of not being able to execute some cryptic /usr/bin/java//bin/java.
For example, in my case (Ubuntu 12.04, OpenJDK) the java home is set to
/usr/lib/jvm/java-6-openjdk-amd64/jre
where obviously there exists a /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java, of which /usr/bin/java ultimately represents a symbolic link.

Looks like Ant is assuming /usr/bin/java to start. Perhaps you don't need to set it.
Or try adding a leading slash (/usr instead of usr).

JAVA_HOME shouldn't be pointed to the java executable, rather it should be the parent directory of 'bin' where javac the compiler is located.
Usually the '/usr/bin/java' is a symbolic link to the actual executable in somewhere else, e.g., '/usr/lib/java/jdk*/bin/java', in which case the java home should be /usr/lib/java/jdk*.

Related

Set JDK path in linux

Something really weird occurs. When I type in:
which java
the output is like:
/private/me/jdk1.8.0_20/bin/java
and when typing in:
echo $JAVA_HOME
the output is:
/usr/java/jdk1.6.0_24
I want to use 'jdk1.6.0_24' and I change all the things in '/etc/profile' and '~/.bashrc' to point it to 'jdk1.6.0_24', such issue still existed. The java I use is still 1.8. Why?
I am pretty sure you need to update-alternatives:
sudo update-alternatives --config java
and select java 1.6.0
Try updating your path as follows:
export PATH=/usr/java/jdk1.6.0_24/bin:$PATH
don't use export PATH=$PATH:/usr/java/jdk1.6.0_24/bin unless you uninstall first the "default" java (if you use this then the java binary in /usr/bin will be found first, which is not what you want).
There is a caveat on this: the binaries in /usr/java/jdk1.6.0_24/bin will be found before than the ones in the rest of the path, which is harmless because you only have java-related binaries on /usr/java/jdk1.6.0_24/bin
caveat #2: make sure you are not redefining PATH after this line or in another script
Go to your home, and show hidden file, then you will find the file .bashrc. Edit and go to the end of the file, then add
export PATH=$PATH:/usr/java/jdk1.6.0_24/bin
$PATH means the current path, in order to append the new value
Then, you will use jdk1.6.
Each time you write java -version, you will find the most recent version (jdk1.8), but your program will use jdk1.6

Compiling and running java application using powershell

I am trying to compile and a sample Helloworld.java file.
I have my jdk installed in C:\Program Files\jdk1.7\bin.
And I have my Helloworld.java in C:\Helloworld.java
I am actually a novice in both powershell and java.
I got some examples from web regarding this but many of them advice to run it like this:
java.exe -classpath $Env:CLASSPATH C:\Helloworld.java
But when I give this in powershell I get an error called 'CLASSPATH' is not defined even after adding it in env variables.
And when I try to compile the code with the following syntax:
$javac C:\Helloworld.java I get an error "javac is not recognised as a token".
So, I am literally lost in this topic . Any step by step procedure to run java programs using powershell for dummies like me will be greatly appreciated.
Setup environment variables in your system.
set JAVA_HOME to C:\Program Files\jdk1.7
add to PATH variable the string %JAVA_HOME%\bin
open new cmd session.
navigate your java source folder.
use javac to compile your java files.
UPDATE:
also if you are experiencing difficulities upon launching an executable via PowerShell check this Microsoft TechNet article
The variables you speak of do not exist in PowerShell as you name them.
The correct variable names are
$Env:JAVA_HOME: C:\jdk1.6.0;
$Env:PATH: C:\jdk1.6.0\bin;.;
$Env:CLASSPATH: C:\jdk1.6.0\lib;.;
As they all must be defined in the ENV: PSDrive
To answer it in a much simpler way , its the path problem .
You probably not have set env variables that's it.
This is how you should set it:
JAVA_HOME: C:\jdk1.6.0;
PATH: C:\jdk1.6.0\bin;.;
CLASSPATH: C:\jdk1.6.0\lib;.;
And later if you open a cmd prompt and type java -version , if you are able to see the java installed version then you are good to go.

Ubuntu now able to set java path

I have installed oracle jdk in /usr/lib/jvm/ and i have setted up path in etc/environment as
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
PATH=$PATH:$JAVA_HOME/bin
But still when i am running javac, I am getting following error. The program 'javac' can be found in the following packages:
* default-jdk
* ecj
* gcj-4.6-jdk
* gcj-4.7-jdk
* openjdk-7-jdk
* openjdk-6-jdk
It means javac is not installed or java path has not setted properly, however i am able to see javac,java,jps and other programs in my /usr/lib/jvm/jdk1.7.0_51. I have searched enough about it but still not able to get solution of this problem.
The file /etc/environment is not a file executed by the shell (like a shell script); you cannot use $SOMETHING references in this file. Variables are not substituted in this file. So,
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
PATH=$PATH:$JAVA_HOME/bin
the second line will not work like this. You have to put the exact path in.
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
PATH=...:/usr/lib/jvm/jdk1.7.0_51/bin
The javac binary (and probably other java binaries) is/are not in your user's $PATH environment variable. There are several ways you can address this:
Add /usr/lib/jvm/jdk1.7.0_51/bin to your user's $PATH
environment variable. You can do this by adding a line similar to
the following in your user's .bash_profile:
export PATH=${PATH}:/usr/lib/jvm/jdk1.7.0_51/bin
You'll have to restart your terminal session for it to take effect.
Create symbolic links to the java binaries from some directory
that's already part of your path (such as /usr/bin)
sudo ln -s /usr/lib/jvm/jdk1.7.0_51/bin/java /usr/bin/
sudo ln-s /usr/lib/jvm/jdk1.7.0_51/bin/javac /usr/bin/
BTW: There are several other java executables in /usr/lib/jvm/jdk1.7.0_51/bin. see the symlink commands for java and javac above. You should run similar command for any other executables you may want to use.
Use the fully qualified path directly on the command line:
$ /usr/lib/jvm/jdk1.7.0_51/bin/javac
https://help.ubuntu.com/community/Java
have you tried this page? Its where I go when I need Java info. You may not have the one you installed set as default.
Could it be that you did not refresh the shell after change in path variable?
if you echo $PATH are the changes present?

'wsimport' is not recognized error in command prompt

I am new at web-services. I am trying to generate the stubs using this command:
wsimport -d ./build -s ./src -p com.ECS.client.jax http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl -b jaxws-custom.xml
I am getting this error in the cmd:
wsimport is not recognized
My Java environment variable system path is C:\Program Files (x86)\Java\jdk1.7.0. What am I doing wrong?
I resolved this issue by using wsimport from netbeans not from cmd...but I still don't know why I couldn't use it from cmd.
C:\Program Files\Java\jdk1.7.0_60\bin
This is where my jdk is, works for my system:
Go to My computer >> right click and select properties.
On the properties tab select Advanced system settings (Windows 7)
Click enviroment variables
select path and click edit option
add
";C:\Program Files\Java\jdk1.7.0_60\bin"
at the end.
Done.
wsimport and all other java commands are present in jdk bin directory and hence you need to update your PATH variable to include:
"C:\Program Files (x86)\Java\jdk1.7.0\bin"
instead of
"C:\Program Files (x86)\Java\jdk1.7.0"
I offer to create JAVA_HOME path. For example my JAVA_HOME:
JAVA_HOME c:\Java\jdk1.6.0_26\
My java path not include any special character and spacing between characters. Windows Path included this:
%JAVA_HOME%\bin;
or:
c:\Java\jdk1.6.0_26\bin;
Please check your Path. May be included wrong character, another slash, second java path or not included semicolon.
your java path is not set properly. what you can do is.
go to your java bin folder in your cmd prompt like c:\java\jdk.1.7.0\bin and enter your command like wsimport or wsimport -keep -s blahblahblah.
This will work!!!
You can also do this instead of changing the enviroment path variables
'C:\Program Files\Java\jdk1.8.0_60\bin\wsimport.exe'
And simply execute your code like:
'C:\Program Files\Java\jdk1.8.0_60\bin\wsimport.exe' -d ./build -s ./src -p com.ECS.client.jax http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl -b jaxws-custom.xml
I know this is an old post but I found this solution today and this was the way I solved!
Go to the environment variable. Under system variable choose "PATH" and edit it. In the new dialog box append path till bin folder of jdk. It MUST work.
If you're on linux and can't find wsimport as a default shell command, you might want to install openjdk-devel.
Actually the problem for this issue is system is not finding the java on the path variable. Eventually the command will work after adding the java on your system path variable..
This is the best solution for this problem:
run on your cmd this line:
c:>set path=%path%;C:\Program Files\Java\jdk1.8.0_51\bin
It should work.
I found it on
http://www.skylit.com/javamethods/faqs/javaindos.html
I just delete the entry in path as %JAVA_HOME%\bin and provide the direct path as C:\Program Files\Java\jdk1.8.0_101\bin . I don't know why because previously also it was pointing to same directory only.

regarding javac

javac is not internal or external command error is coming. I have set the path. then also it is giving the same error.
Are you sure you installed the JDK?
The JRE (aka "Java Runtime") does not contain javac, this is only part of the JDK ("Development Kit")
You should first examine the PATH by executing this command:
echo %PATH%
Among these folders should be at least one that looks similar to this:
C:\Program Files\Java\jdk1.6.0_20\bin
Maybe you left out the bin at the end, maybe there isn't such a folder name at all in your PATH? We cannot know. If you tried this and are still unsure, post the value of the PATH so we can give you real tips instead of just guessing.
If you're on windows, and running from a command prompt you need to reopen it to force any PATH changes to take effect

Categories