diff --git a/WHATSNEW b/WHATSNEW index 65c0ce8bd..125def983 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -54,6 +54,9 @@ Other changes: reproducible builds (https://reproducible-builds.org/specs/source-date-epoch/#idm55) Bugzilla Report 62617 + * 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.10.6 TO Ant 1.10.7 ===================================== diff --git a/manual/Tasks/rmic.html b/manual/Tasks/rmic.html index 49a9788c7..c328c581d 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 class and this class is diff --git a/src/etc/testcases/taskdefs/rmic/rmic.xml b/src/etc/testcases/taskdefs/rmic/rmic.xml index 78de8009a..04b3f4dee 100644 --- a/src/etc/testcases/taskdefs/rmic/rmic.xml +++ b/src/etc/testcases/taskdefs/rmic/rmic.xml @@ -201,67 +201,75 @@ - - - - - + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -379,35 +387,35 @@ - + - + - + - + - + @@ -423,7 +431,7 @@ /> - + @@ -455,23 +463,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 83b597aa7..cfd5fcac0 100644 --- a/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java +++ b/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java @@ -72,6 +72,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 f8a62f13d..58c3c00d5 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 ca23c82b5..3b78b8151 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java @@ -229,6 +229,8 @@ public class RmicAdvancedTest { */ @Test public void testDefaultBadClass() { + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage(Rmic.ERROR_RMIC_FAILED); try { @@ -337,6 +339,8 @@ public class RmicAdvancedTest { public void testXnewForkedJava9plus() { assumeTrue("Current system is Java 8 or older", JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("JDK9 has removed support for -Xnew"); buildRule.executeTarget("testXnewForked"); @@ -359,6 +363,8 @@ public class RmicAdvancedTest { public void testXnewForkedDestJava9plus() { assumeTrue("Current system is Java 8 or older", JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("JDK9 has removed support for -Xnew"); buildRule.executeTarget("testXnewForkedDest"); @@ -381,6 +387,8 @@ public class RmicAdvancedTest { public void testXnewCompilerJava9plus() { assumeTrue("Current system is Java 8 or older", JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("JDK9 has removed support for -Xnew"); buildRule.executeTarget("testXnewCompiler"); @@ -403,6 +411,8 @@ public class RmicAdvancedTest { public void testXnewCompilerDestJava9plus() { assumeTrue("Current system is Java 8 or older", JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("JDK9 has removed support for -Xnew"); buildRule.executeTarget("testXnewCompilerDest"); @@ -423,6 +433,8 @@ public class RmicAdvancedTest { @Test public void testIDLJava11plus() { assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("this rmic implementation doesn't support the -idl switch"); buildRule.executeTarget("testIDL"); @@ -443,6 +455,8 @@ public class RmicAdvancedTest { @Test public void testIDLDestJava11plus() { assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("this rmic implementation doesn't support the -idl switch"); buildRule.executeTarget("testIDL"); @@ -463,6 +477,8 @@ public class RmicAdvancedTest { @Test public void testIIOPJava11plus() { assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("this rmic implementation doesn't support the -iiop switch"); buildRule.executeTarget("testIIOP"); @@ -483,6 +499,8 @@ public class RmicAdvancedTest { @Test public void testIIOPDestJava11plus() { assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); + assumeFalse("Current system is Java 15 or newer", + JavaEnvUtils.isAtLeastJavaVersion("15")); thrown.expect(BuildException.class); thrown.expectMessage("this rmic implementation doesn't support the -iiop switch"); buildRule.executeTarget("testIIOP");