From 45fd589a1fb2eece010993b43eb220821ea0d22a Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 5 May 2020 11:53:39 +0200 Subject: [PATCH] rmic has been removed in Java 15+ --- WHATSNEW | 3 + manual/Tasks/rmic.html | 5 ++ src/etc/testcases/taskdefs/rmic/rmic.xml | 58 +++++++++++-------- .../ant/taskdefs/rmic/ForkingSunRmic.java | 5 ++ src/tests/antunit/taskdefs/rmic-test.xml | 22 ++++++- .../tools/ant/taskdefs/RmicAdvancedTest.java | 10 +++- 6 files changed, 74 insertions(+), 29 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index aac8219a8..55ef28963 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -7,6 +7,9 @@ Other changes: * The runant.py script should now work with Python 3. Github Pull Request #96 + * rmic has been removed from Java 15. The task will now throw an + exception if you try to use it while running Java 15 or newer. + Changes from Ant 1.9.13 TO Ant 1.9.14 ===================================== diff --git a/manual/Tasks/rmic.html b/manual/Tasks/rmic.html index c0d6dafd3..226b54ba5 100644 --- a/manual/Tasks/rmic.html +++ b/manual/Tasks/rmic.html @@ -27,6 +27,11 @@

Rmic

Description

Runs the rmic compiler for a certain class.

+ +

Note rmic has been deprecated as of Java 13 and + removed as of Java 15. Trying to use it with Java15 will fail unless + you specifiy the execxutable or rmic-adapter explicitly.

+

Rmic can be run on a single class (as specified with the classname attribute) or a number of classes at once (all classes below base that are neither _Stub nor _Skel classes). If you want to rmic a single diff --git a/src/etc/testcases/taskdefs/rmic/rmic.xml b/src/etc/testcases/taskdefs/rmic/rmic.xml index 4670f43f7..fe9973e33 100644 --- a/src/etc/testcases/taskdefs/rmic/rmic.xml +++ b/src/etc/testcases/taskdefs/rmic/rmic.xml @@ -201,11 +201,16 @@ - - - - - + + + + + + + + + + @@ -218,56 +223,59 @@ + + + - + - + - + - + - + - + - + - + - + - + @@ -385,35 +393,35 @@ - + - + - + - + - + @@ -429,7 +437,7 @@ /> - + @@ -478,23 +486,23 @@ - + - + - + - + diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java index 9efc486d5..5afae42ee 100644 --- a/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java +++ b/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java @@ -71,6 +71,11 @@ public class ForkingSunRmic extends DefaultRmicAdapter { Project project = owner.getProject(); String executable = owner.getExecutable(); if (executable == null) { + if (JavaEnvUtils.isAtLeastJavaVersion("15")) { + throw new BuildException("rmic does not exist under Java 15 and higher," + + " use rmic of an older JDK and explicitly set the executable attribute"); + } + // no explicitly specified executable // rely on RMIC being on the path executable = JavaEnvUtils.getJdkExecutable(getExecutableName()); diff --git a/src/tests/antunit/taskdefs/rmic-test.xml b/src/tests/antunit/taskdefs/rmic-test.xml index 67b4afc3f..3fdf5a59f 100644 --- a/src/tests/antunit/taskdefs/rmic-test.xml +++ b/src/tests/antunit/taskdefs/rmic-test.xml @@ -76,8 +76,13 @@ public class Adapter implements RmicAdapter { - + + + + + + + + + + + + + + + + + + diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java index 676eda4b2..4ca4fe22c 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java @@ -25,6 +25,7 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.rmic.RmicAdapterFactory; import org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter; import org.apache.tools.ant.util.JavaEnvUtils; +import org.junit.Assume; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; @@ -232,6 +233,7 @@ public class RmicAdvancedTest { */ @Test public void testDefaultBadClass() throws Exception { + Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("15")); try { buildRule.executeTarget("testDefaultBadClass"); fail("expected the class to fail"); @@ -445,7 +447,9 @@ public class RmicAdvancedTest { } private void xnewTest(String target) { - if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) { + if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) + || JavaEnvUtils.isAtLeastJavaVersion("15")) { + // target is skipped with Java 15+ buildRule.executeTarget(target); } else { try { @@ -458,7 +462,9 @@ public class RmicAdvancedTest { } private void corbaTest(String target) { - if (!JavaEnvUtils.isAtLeastJavaVersion("11")) { + if (!JavaEnvUtils.isAtLeastJavaVersion("11") + || JavaEnvUtils.isAtLeastJavaVersion("15")) { + // target is skipped with Java 15+ buildRule.executeTarget(target); } else { try {