You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/05/02 17:03:17 UTC
cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/optional/javah SunJavah.java
bodewig 2005/05/02 08:03:17
Modified: src/main/org/apache/tools/ant/taskdefs/optional/javah Tag:
ANT_16_BRANCH SunJavah.java
Log:
Ensure that forked VM can find javah, PR 34681
Revision Changes Path
No revision
No revision
1.1.2.2 +24 -25 ant/src/main/org/apache/tools/ant/taskdefs/optional/javah/SunJavah.java
Index: SunJavah.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/javah/SunJavah.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- SunJavah.java 4 Feb 2005 08:13:47 -0000 1.1.2.1
+++ SunJavah.java 2 May 2005 15:03:17 -0000 1.1.2.2
@@ -16,12 +16,15 @@
*/
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;
import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.util.JavaEnvUtils;
+
/**
* Adapter to com.sun.tools.javah.oldjavah.Main or com.sun.tools.javah.Main.
@@ -40,22 +43,25 @@
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;
}
@@ -77,25 +83,18 @@
cmd.createArgument().setPath(javah.getClasspath());
}
- // JDK1.1 is rather simpler than JDK1.2
- if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
- if (javah.getVerbose()) {
- cmd.createArgument().setValue("-v");
- }
- } else {
- if (javah.getVerbose()) {
- cmd.createArgument().setValue("-verbose");
- }
- if (javah.getOld()) {
- cmd.createArgument().setValue("-old");
- }
- if (javah.getForce()) {
- cmd.createArgument().setValue("-force");
- }
- if (javah.getStubs() && !javah.getOld()) {
- throw new BuildException("stubs only available in old mode.",
- javah.getLocation());
- }
+ if (javah.getVerbose()) {
+ cmd.createArgument().setValue("-verbose");
+ }
+ if (javah.getOld()) {
+ cmd.createArgument().setValue("-old");
+ }
+ if (javah.getForce()) {
+ cmd.createArgument().setValue("-force");
+ }
+ if (javah.getStubs() && !javah.getOld()) {
+ throw new BuildException("stubs only available in old mode.",
+ javah.getLocation());
}
if (javah.getStubs()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org