CommandlineJava (and with thus to <java fork="true">). Suggested by: Jesse Glick <Jesse.Glick@netbeans.com> Also, add .exe on OS/2 as well. This still doesn't work for IBM's JDK 1.3 on AIX (java is in JAVA_HOME/jre/sh and javac in JAVA_HOME/sh) - need to find out what java.home points to and where javadoc is, before we can fix that. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269357 13f79535-47bb-0310-9956-ffa450edef68master
@@ -1145,10 +1145,12 @@ public class Javadoc extends Task { | |||||
private String getJavadocExecutableName() | private String getJavadocExecutableName() | ||||
{ | { | ||||
// This is the most common extension case - exe for windows, nothing | |||||
// for *nix. | |||||
String extension = (System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0) ? | |||||
".exe" : ""; | |||||
// This is the most common extension case - exe for windows and OS/2, | |||||
// nothing for *nix. | |||||
String os = System.getProperty("os.name").toLowerCase(); | |||||
boolean dosBased = | |||||
os.indexOf("windows") >= 0 || os.indexOf("os/2") >= 0; | |||||
String extension = dosBased? ".exe" : ""; | |||||
// Look for javadoc in the java.home/../bin directory. Unfortunately | // Look for javadoc in the java.home/../bin directory. Unfortunately | ||||
// on Windows java.home doesn't always refer to the correct location, | // on Windows java.home doesn't always refer to the correct location, | ||||
@@ -128,7 +128,7 @@ public class CommandlineJava implements Cloneable { | |||||
} | } | ||||
public CommandlineJava() { | public CommandlineJava() { | ||||
setVm("java"); | |||||
setVm(getJavaExecutableName()); | |||||
setVmversion(org.apache.tools.ant.Project.getJavaVersion()); | setVmversion(org.apache.tools.ant.Project.getJavaVersion()); | ||||
} | } | ||||
@@ -254,4 +254,27 @@ public class CommandlineJava implements Cloneable { | |||||
javaCommand.clearArgs(); | javaCommand.clearArgs(); | ||||
} | } | ||||
private String getJavaExecutableName() { | |||||
// This is the most common extension case - exe for windows and OS/2, | |||||
// nothing for *nix. | |||||
String os = System.getProperty("os.name").toLowerCase(); | |||||
boolean dosBased = | |||||
os.indexOf("windows") >= 0 || os.indexOf("os/2") >= 0; | |||||
String extension = dosBased? ".exe" : ""; | |||||
// Look for java in the java.home/../bin directory. Unfortunately | |||||
// on Windows java.home doesn't always refer to the correct location, | |||||
// so we need to fall back to assuming java is somewhere on the | |||||
// PATH. | |||||
java.io.File jExecutable = | |||||
new java.io.File(System.getProperty("java.home") + | |||||
"/../bin/java" + extension ); | |||||
if (jExecutable.exists()) { | |||||
return jExecutable.getAbsolutePath(); | |||||
} else { | |||||
return "java"; | |||||
} | |||||
} | |||||
} | } |