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));
+ }
+
}