Hello Rick,
Ant 1.10.6 cannot be used with Java 21 because of this very
SecurityManager usage within Ant. Considering this issue and Java
SecurityManager's deprecation for removal, we have released Ant 1.10.14
a couple of months back
https://lists.apache.org/thread/9vhk51nkw9wjxzm7xk2q9xm6s803prmr.
Please use Ant 1.10.14 when building with Java 21. I'll be interested in
hearing how it goes and if there are any issues you run into.
-Jaikiran
On 21/10/23 2:09 am, Rick Hillegas wrote:
I am running Java 21 (OpenJDK 64-Bit Server VM (build 21+35-2513,
mixed mode, sharing)) and Ant 1.10.6. The following stanza in my
build.xml file raises a java.lang.UnsupportedOperationException:
<java classname="org.apache.derbyBuild.maintversion2props">
<classpath path="${out.build.dir}"/>
<arg
value="${out.engine.dir}/org/apache/derby/info/engine/info.properties"/>
<arg value="${release.dir}/maintversion.properties"/>
</java>
The maintversion2props class is very simple, it just writes a file. I
would appreciate your advice about how to get over this hurdle.
Thanks,
-Rick
Here is the maintversion2props class:
public class maintversion2props
{
public static void main(String[] args) throws Exception
{
InputStream is = new FileInputStream(args[0]);
Properties p = new Properties();
p.load(is);
String maint = "";
maint = p.getProperty("derby.version.maint");
if (maint == null)
{
maint = p.getProperty("maint");
}
Properties p2 = new Properties();
p2.setProperty("interim", Integer.toString(Integer.parseInt(maint) /
1000000));
p2.setProperty("point", Integer.toString(Integer.parseInt(maint) %
1000000));
OutputStream os = new FileOutputStream(args[1]);
p2.store(os, "");
}
}
...and here is the full stack trace:
[java] java.lang.UnsupportedOperationException: The Security Manager is
deprecated and will be removed in a future release
[java] at
org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:861)
[java] at
org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:231)
[java] at
org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
[java] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
[java] at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[java] at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[java] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
[java] at org.apache.tools.ant.Task.perform(Task.java:350)
[java] at org.apache.tools.ant.Target.execute(Target.java:449)
[java] at org.apache.tools.ant.Target.performTasks(Target.java:470)
[java] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1391)
[java] at
org.apache.tools.ant.Project.executeTarget(Project.java:1364)
[java] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[java] at
org.apache.tools.ant.Project.executeTargets(Project.java:1254)
[java] at org.apache.tools.ant.Main.runBuild(Main.java:830)
[java] at org.apache.tools.ant.Main.startAnt(Main.java:223)
[java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
[java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
[java] Caused by: java.lang.UnsupportedOperationException: The Security
Manager is deprecated and will be removed in a future release
[java] at
java.base/java.lang.System.setSecurityManager(System.java:429)
[java] at
org.apache.tools.ant.types.Permissions.setSecurityManager(Permissions.java:103)
[java] at
org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:216)
[java] at
org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:155)
[java] ... 19 more