@@ -52,6 +52,9 @@ Other changes: | |||||
* added "javac10+" as new supported value for javac's compiler attribute. | * added "javac10+" as new supported value for javac's compiler attribute. | ||||
* javah has been removed from Java 10. The task will now throw an | |||||
exception if you try to use it while running Java 10 or newer. | |||||
Changes from Ant 1.9.8 TO Ant 1.9.9 | Changes from Ant 1.9.8 TO Ant 1.9.9 | ||||
=================================== | =================================== | ||||
@@ -39,7 +39,8 @@ systems are used.</p> | |||||
generate the native header files with a single step.</p> | generate the native header files with a single step.</p> | ||||
<p><b>Note</b> the <code>javah</code> has been deprecated as of Java 9 | <p><b>Note</b> the <code>javah</code> has been deprecated as of Java 9 | ||||
and is scheduled to be removed with Java 10.</p> | |||||
and removed as of Java 10. Trying to use it with Java10 will | |||||
fail.</p> | |||||
<p>It is possible to use different compilers. This can be selected | <p>It is possible to use different compilers. This can be selected | ||||
with the <code>implementation</code> attribute or a nested element. <a | with the <code>implementation</code> attribute or a nested element. <a | ||||
@@ -89,6 +89,10 @@ public class JavahAdapterFactory { | |||||
} else if ((JavaEnvUtils.isGij() && choice == null) | } else if ((JavaEnvUtils.isGij() && choice == null) | ||||
|| Gcjh.IMPLEMENTATION_NAME.equals(choice)) { | || Gcjh.IMPLEMENTATION_NAME.equals(choice)) { | ||||
return new Gcjh(); | return new Gcjh(); | ||||
} else if (JavaEnvUtils.isAtLeastJavaVersion("10") && | |||||
(choice == null || ForkingJavah.IMPLEMENTATION_NAME.equals(choice))) { | |||||
throw new BuildException("javah does not exist under Java 10 and higher," | |||||
+ " use the javac task with nativeHeaderDir instead"); | |||||
} else if ((JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) | } else if ((JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) | ||||
&& choice == null) | && choice == null) | ||||
|| ForkingJavah.IMPLEMENTATION_NAME.equals(choice)) { | || ForkingJavah.IMPLEMENTATION_NAME.equals(choice)) { | ||||
@@ -101,12 +101,12 @@ public class Foo { | |||||
</presetdef> | </presetdef> | ||||
</target> | </target> | ||||
<target name="testSimpleCompile" depends="-setupForRealJavahTests"> | |||||
<target name="testSimpleCompile" depends="-setupForRealJavahTests" unless="jdk10+"> | |||||
<javah-single/> | <javah-single/> | ||||
<au:assertFileExists file="${output}/org_example_Foo.h"/> | <au:assertFileExists file="${output}/org_example_Foo.h"/> | ||||
</target> | </target> | ||||
<target name="testCompileUsingFileset" depends="-setupForRealJavahTests"> | |||||
<target name="testCompileUsingFileset" depends="-setupForRealJavahTests" unless="jdk10+"> | |||||
<javah-fileset/> | <javah-fileset/> | ||||
<au:assertFileExists file="${output}/org_example_Foo.h"/> | <au:assertFileExists file="${output}/org_example_Foo.h"/> | ||||
</target> | </target> | ||||
@@ -123,13 +123,21 @@ public class Foo { | |||||
<au:assertFileExists file="${output}/org_example_Foo.h"/> | <au:assertFileExists file="${output}/org_example_Foo.h"/> | ||||
</target> | </target> | ||||
<target name="testSimpleCompileForking" depends="-setupForRealJavahTests"> | |||||
<target name="testSimpleCompileForking" depends="-setupForRealJavahTests" unless="jdk10+"> | |||||
<javah-single implementation="forking"/> | <javah-single implementation="forking"/> | ||||
<au:assertFileExists file="${output}/org_example_Foo.h"/> | <au:assertFileExists file="${output}/org_example_Foo.h"/> | ||||
</target> | </target> | ||||
<target name="testCompileUsingFilesetForking" depends="-setupForRealJavahTests"> | |||||
<target name="testCompileUsingFilesetForking" depends="-setupForRealJavahTests" unless="jdk10+"> | |||||
<javah-fileset implementation="forking"/> | <javah-fileset implementation="forking"/> | ||||
<au:assertFileExists file="${output}/org_example_Foo.h"/> | <au:assertFileExists file="${output}/org_example_Foo.h"/> | ||||
</target> | </target> | ||||
<target name="testSimpleCompileFailsOnJava10+" depends="-setupForRealJavahTests" | |||||
if="jdk10+"> | |||||
<au:expectfailure> | |||||
<javah-single/> | |||||
</au:expectfailure> | |||||
</target> | |||||
</project> | </project> |
@@ -18,6 +18,8 @@ | |||||
package org.apache.tools.ant.taskdefs.optional; | package org.apache.tools.ant.taskdefs.optional; | ||||
import org.apache.tools.ant.BuildFileRule; | import org.apache.tools.ant.BuildFileRule; | ||||
import org.apache.tools.ant.util.JavaEnvUtils; | |||||
import org.junit.Assume; | |||||
import org.junit.After; | import org.junit.After; | ||||
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Rule; | import org.junit.Rule; | ||||
@@ -47,6 +49,7 @@ public class JavahTest { | |||||
@Test | @Test | ||||
public void testSimpleCompile() { | public void testSimpleCompile() { | ||||
Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("10")); | |||||
buildRule.executeTarget("simple-compile"); | buildRule.executeTarget("simple-compile"); | ||||
assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h") | assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h") | ||||
.exists()); | .exists()); | ||||
@@ -54,6 +57,7 @@ public class JavahTest { | |||||
@Test | @Test | ||||
public void testCompileFileset() { | public void testCompileFileset() { | ||||
Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("10")); | |||||
buildRule.executeTarget("test-fileset"); | buildRule.executeTarget("test-fileset"); | ||||
assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h").exists()); | assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h").exists()); | ||||
} | } | ||||