Windows javac path env issues

I have my javac under my project directory. Lets say at C:\workspace\myworkspace\java\bin\javac

what i want to do is, in ant, use that particular javac for building. so i do

<exec executable="java\bin\javac">
<exec>

but my eclipse keep complaining

BUILD FAILED
C:\workspace\myworkspace\build.xml:7: Execute failed: java.io.IOException: Cannot run program "java\bin\javac" (in directory "C:\workspace\myworkspace"): CreateProcess error=2, The system cannot find the file specified

what is wrong? I went to directory C:\workspace\myworkspace\java\bin\ and do javac and it works, but i cant do C:\workspace\myworkspace\java\bin\java from command line.

What is different on Windows? I normally work on linux so I don't know how to make it right on windows.

To add a bit more, I don't want add this java to my $PATH, because it's particular for this project only, and i dont want to mess up with my other java executables.

Jon Skeet
people
quotationmark

Two potential problems...

Firstly, it's possible that this:

<exec executable="java\bin\javac">

... is making Ant look for a file called java\bin\javac within the directory c:\workspace\myworkspace, where it doesn't exist. It's javac within c:\workspace\myworkspace\java\bin, which isn't quite the same thing.

As per the exec documentation you might want to use a <property> with a location attribute to resolve the file.

Secondly, it's possible that it's being confused by looking for javac when the executable is actually called javac.exe. The .exe extension is checked for by the command shell, but I don't think Runtime.exec will do the same thing.

Also, as Braj mentioned in comments, you'd be better off using Ant's built-in support for javac...

people

See more on this question at Stackoverflow