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

Reply via email to