Browse Source

Ensure the forked VM can find the Sun Javah implementation.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277631 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 20 years ago
parent
commit
45655beb89
1 changed files with 12 additions and 6 deletions
  1. +12
    -6
      src/main/org/apache/tools/ant/taskdefs/optional/javah/SunJavah.java

+ 12
- 6
src/main/org/apache/tools/ant/taskdefs/optional/javah/SunJavah.java View File

@@ -16,7 +16,10 @@
*/
package org.apache.tools.ant.taskdefs.optional.javah;

import java.io.File;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.launch.Locator;
import org.apache.tools.ant.taskdefs.ExecuteJava;
import org.apache.tools.ant.taskdefs.optional.Javah;
import org.apache.tools.ant.types.Commandline;
@@ -40,22 +43,25 @@ public class SunJavah implements JavahAdapter {
public boolean compile(Javah javah) throws BuildException {
Commandline cmd = setupJavahCommand(javah);
ExecuteJava ej = new ExecuteJava();
Class c = null;
try {
try {
// first search for the "old" javah class in 1.4.2 tools.jar
Class.forName("com.sun.tools.javah.oldjavah.Main");
cmd.setExecutable("com.sun.tools.javah.oldjavah.Main");
c = Class.forName("com.sun.tools.javah.oldjavah.Main");
} catch (ClassNotFoundException cnfe) {
// assume older than 1.4.2 tools.jar
Class.forName("com.sun.tools.javah.Main");
cmd.setExecutable("com.sun.tools.javah.Main");
c = Class.forName("com.sun.tools.javah.Main");
}
} catch (ClassNotFoundException ex) {
throw new BuildException("Can't load javah", ex,
javah.getLocation());
}
cmd.setExecutable(c.getName());
ej.setJavaCommand(cmd);
File f = Locator.getClassSource(c);
if (f != null) {
ej.setClasspath(new Path(javah.getProject(), f.getPath()));
}
return ej.fork(javah) == 0;
}

@@ -117,4 +123,4 @@ public class SunJavah implements JavahAdapter {
return cmd;
}

}
}

Loading…
Cancel
Save