diff --git a/WHATSNEW b/WHATSNEW index d191f9fdb..ce969f403 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -75,6 +75,9 @@ Other changes: * 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.10.0 TO Ant 1.10.1 ===================================== diff --git a/manual/Tasks/javah.html b/manual/Tasks/javah.html index bc49d77da..088b6e85d 100644 --- a/manual/Tasks/javah.html +++ b/manual/Tasks/javah.html @@ -39,7 +39,8 @@ systems are used.

generate the native header files with a single step.

Note the javah has been deprecated as of Java 9 - and is scheduled to be removed with Java 10.

+ and removed as of Java 10. Trying to use it with Java10 will + fail.

It is possible to use different compilers. This can be selected with the implementation attribute or a nested element. 1) { + javaVersionNumber += pv.get(1); + } + javaVersion = pv.toString(); } catch (Throwable t) { // swallow as we've hit the max class version that // we have diff --git a/src/tests/antunit/taskdefs/optional/javah-test.xml b/src/tests/antunit/taskdefs/optional/javah-test.xml index 884523d9f..82d91c8f6 100644 --- a/src/tests/antunit/taskdefs/optional/javah-test.xml +++ b/src/tests/antunit/taskdefs/optional/javah-test.xml @@ -101,12 +101,12 @@ public class Foo { - + - + @@ -123,13 +123,21 @@ public class Foo { - + - + + + + + + + + diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/JavahTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/JavahTest.java index 40472de2b..91f7b3278 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/JavahTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/JavahTest.java @@ -18,6 +18,8 @@ package org.apache.tools.ant.taskdefs.optional; import org.apache.tools.ant.BuildFileRule; +import org.apache.tools.ant.util.JavaEnvUtils; +import org.junit.Assume; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -47,6 +49,7 @@ public class JavahTest { @Test public void testSimpleCompile() { + Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("10")); buildRule.executeTarget("simple-compile"); assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h") .exists()); @@ -54,6 +57,7 @@ public class JavahTest { @Test public void testCompileFileset() { + Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("10")); buildRule.executeTarget("test-fileset"); assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h").exists()); } diff --git a/src/tests/junit/org/apache/tools/ant/util/JavaEnvUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/JavaEnvUtilsTest.java index 28e1386cb..57d45e56b 100644 --- a/src/tests/junit/org/apache/tools/ant/util/JavaEnvUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/JavaEnvUtilsTest.java @@ -143,4 +143,15 @@ public class JavaEnvUtilsTest { assertTrue("JAVA_1_9 is not considered equal to JAVA_9", JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_9)); } + + @Test + public void java10IsDetectedProperly() { + assumeTrue("10".equals(System.getProperty("java.specification.version"))); + assertEquals("10", JavaEnvUtils.getJavaVersion()); + assertEquals(100, JavaEnvUtils.getJavaVersionNumber()); + assertEquals(new DeweyDecimal("10"), JavaEnvUtils.getParsedJavaVersion()); + assertTrue(JavaEnvUtils.isJavaVersion("10")); + assertTrue(JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); + } + }