United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 4824827 Change in 1.4.2-beta Javah results in Apache Ant (1.5+) <javah> task failing
4824827 : Change in 1.4.2-beta Javah results in Apache Ant (1.5+) task failing

Details
Type:
Bug
Submit Date:
2003-02-27
Status:
Open
Updated Date:
2013-04-26
Project Name:
JDK
Resolved Date:
Component:
tools
OS:
generic,solaris_10,windows_2000
Sub-Component:
javah
CPU:
x86,sparc,generic
Priority:
P4
Resolution:
Unresolved
Affected Versions:
1.4.2
Targeted Versions:

Related Reports

Sub Tasks

Description
Change in 1.4.2-beta Javah results in Apache Ant (1.5+) <javah> task failing. I understand that the Javah API is not public but its still going to burn Java developers.

Ant output
----------
BUILD FAILED
java.lang.NoSuchMethodError: com.sun.tools.javah.Main.<init>([Ljava/lang/String;)V
	at org.apache.tools.ant.taskdefs.optional.Javah.doClassicCompile(Javah.java:348)
	at org.apache.tools.ant.taskdefs.optional.Javah.execute(Javah.java:318)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:143)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:143)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1250)
	at org.apache.tools.ant.Main.runBuild(Main.java:610)
	at org.apache.tools.ant.Main.start(Main.java:196)
	at org.apache.tools.ant.Main.main(Main.java:235)

Total time: 8 seconds
java.lang.NoSuchMethodError: com.sun.tools.javah.Main.<init>([Ljava/lang/String;)V
	at org.apache.tools.ant.taskdefs.optional.Javah.doClassicCompile(Javah.java:348)
	at org.apache.tools.ant.taskdefs.optional.Javah.execute(Javah.java:318)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:143)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:143)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
	at org.apache.tools.ant.Task.perform(Task.java:319)
	at org.apache.tools.ant.Target.execute(Target.java:309)
	at org.apache.tools.ant.Target.performTasks(Target.java:336)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1250)
	at org.apache.tools.ant.Main.runBuild(Main.java:610)
	at org.apache.tools.ant.Main.start(Main.java:196)
	at org.apache.tools.ant.Main.main(Main.java:235)
com.sun.tools.javah.Main.<init>([Ljava/lang/String;)V

Java version
------------
java version "1.4.2-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-beta-b15)
Java HotSpot(TM) Client VM (build 1.4.2-beta-b15, mixed mode)

build.xml fragment
------------------
	<javah destdir="${c.include}" class="classlib.jni.ProviderImpl">
	    <classpath>
                <pathelement path="${java.classes}"/>
            </classpath>
	</javah>


                                    

Comments
If this is still an issue and the fix is low risk then let's to it in 8, else defer to 9.    If it is no longer an issue, close it.
                                     
2013-04-26
This refers to "old old javah" and is no longer an issue.  Both javah and ant have moved on since then
                                     
2013-04-26
WORK AROUND

Call javah using the <exec> ant task.
                                     
2004-09-08
EVALUATION

Unlikely to be addressed in 1.4.2.  Ant will have to check what
version JDK it is running on and use a method present on that JDK.

Perhaps in 1.5 we can piggyback on JSR 199 and provide a supported
API for javah.

###@###.### 2003-02-27
                                     
2003-02-27



Hardware and Software, Engineered to Work Together