diff --git a/test/jdk/ProblemList-Virtual.txt b/test/jdk/ProblemList-Virtual.txt
index 6d4ff898551..6461c3b4a61 100644
--- a/test/jdk/ProblemList-Virtual.txt
+++ b/test/jdk/ProblemList-Virtual.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -75,4 +75,6 @@ java/lang/SecurityManager/modules/CustomSecurityManagerTest.java 0000000 generic
 java/util/PluggableLocale/PermissionTest.java 0000000 generic-all
 java/util/Properties/StoreReproducibilityTest.java 0000000 generic-all
 java/util/Properties/StoreReproducibilityTest.java 0000000 generic-all
+javax/management/ImplementationVersion/ImplVersionTest.java 0000000 generic-all
 javax/management/remote/mandatory/subjectDelegation/SubjectDelegation1Test.java 0000000 generic-all
+javax/management/remote/mandatory/version/ImplVersionTest.java 0000000 generic-all
diff --git a/test/jdk/javax/management/ImplementationVersion/ImplVersionTest.java b/test/jdk/javax/management/ImplementationVersion/ImplVersionTest.java
index cc77fced683..16f0c8f262f 100644
--- a/test/jdk/javax/management/ImplementationVersion/ImplVersionTest.java
+++ b/test/jdk/javax/management/ImplementationVersion/ImplVersionTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,70 +30,48 @@
  * system property.
  * @author Luis-Miguel Alventosa
  *
- * @run clean ImplVersionTest ImplVersionCommand
+ * @library /test/lib
  * @run build ImplVersionTest ImplVersionCommand ImplVersionReader
  * @run main ImplVersionTest
  */
 
+import jdk.test.lib.process.ProcessTools;
+
 import java.io.File;
 
 public class ImplVersionTest {
 
-    public static void main(String[] args) {
-        try {
-            // Get OS name
-            //
-            String osName = System.getProperty("os.name");
-            System.out.println("osName = " + osName);
-            if ("Windows 98".equals(osName)) {
-                // Disable this test on Win98 due to parsing
-                // errors (bad handling of white spaces) when
-                // J2SE is installed under "Program Files".
-                //
-                System.out.println("This test is disabled on Windows 98.");
-                System.out.println("Bye! Bye!");
-                return;
-            }
-            // Get Java Home
-            //
-            String javaHome = System.getProperty("java.home");
-            System.out.println("javaHome = " + javaHome);
-            // Get test src
-            //
-            String testSrc = System.getProperty("test.src");
-            System.out.println("testSrc = " + testSrc);
-            // Get test classes
-            //
-            String testClasses = System.getProperty("test.classes");
-            System.out.println("testClasses = " + testClasses);
-            // Get boot class path
-            //
-            String command =
-                javaHome + File.separator + "bin" + File.separator + "java " +
-                " -classpath " + testClasses +
-                " -Djava.security.manager -Djava.security.policy==" + testSrc +
-                File.separator + "policy -Dtest.classes=" + testClasses +
-                " ImplVersionCommand " +
-                System.getProperty("java.runtime.version");
-            System.out.println("ImplVersionCommand Exec Command = " +command);
-            Process proc = Runtime.getRuntime().exec(command);
-            new ImplVersionReader(proc, proc.getInputStream()).start();
-            new ImplVersionReader(proc, proc.getErrorStream()).start();
-            int exitValue = proc.waitFor();
-            System.out.println("ImplVersionCommand Exit Value = " +
-                               exitValue);
-            if (exitValue != 0) {
-                System.out.println("TEST FAILED: Incorrect exit value " +
-                                   "from ImplVersionCommand");
-                System.exit(exitValue);
-            }
-            // Test OK!
-            //
-            System.out.println("Bye! Bye!");
-        } catch (Exception e) {
-            System.out.println("Unexpected exception caught = " + e);
-            e.printStackTrace();
-            System.exit(1);
+    public static void main(String[] args) throws Exception {
+        // Get test src
+        //
+        String testSrc = System.getProperty("test.src");
+        System.out.println("testSrc = " + testSrc);
+        // Get test classes
+        //
+        String testClasses = System.getProperty("test.classes");
+        System.out.println("testClasses = " + testClasses);
+        // Get boot class path
+        //
+        String[] command = new String[] {
+            "-Djava.security.manager",
+            "-Djava.security.policy==" + testSrc + File.separator + "policy",
+            "-Dtest.classes=" + testClasses,
+            "ImplVersionCommand",
+            System.getProperty("java.runtime.version")
+        };
+
+        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder(command);
+        Process proc = pb.start();
+        new ImplVersionReader(proc, proc.getInputStream()).start();
+        new ImplVersionReader(proc, proc.getErrorStream()).start();
+        int exitValue = proc.waitFor();
+        System.out.println("ImplVersionCommand Exit Value = " + exitValue);
+        if (exitValue != 0) {
+            throw new RuntimeException("TEST FAILED: Incorrect exit value " +
+                                       "from ImplVersionCommand " + exitValue);
         }
+        // Test OK!
+        //
+        System.out.println("Bye! Bye!");
     }
 }
diff --git a/test/jdk/javax/management/remote/mandatory/connection/DefaultAgentFilterTest.java b/test/jdk/javax/management/remote/mandatory/connection/DefaultAgentFilterTest.java
index 8645e6ff86a..7a3236a888e 100644
--- a/test/jdk/javax/management/remote/mandatory/connection/DefaultAgentFilterTest.java
+++ b/test/jdk/javax/management/remote/mandatory/connection/DefaultAgentFilterTest.java
@@ -262,11 +262,9 @@ public class DefaultAgentFilterTest {
       * test other usages (Attributes, Query)
       */
     private static void testDefaultAgent(String propertyFile, String additionalArgument, int port, boolean testOperations) throws Exception {
-        List<String> pbArgs = new ArrayList<>(Arrays.asList(
-                "-cp",
-                System.getProperty("test.class.path"),
-                "-XX:+UsePerfData"
-        ));
+        List<String> pbArgs = new ArrayList<>();
+        pbArgs.add("-XX:+UsePerfData");
+
         // JMX config arguments, using propertyFile if non-null:
         pbArgs.add("-Dcom.sun.management.jmxremote.port=" + port);
         pbArgs.add("-Dcom.sun.management.jmxremote.authenticate=false");
@@ -280,7 +278,7 @@ public class DefaultAgentFilterTest {
         }
         pbArgs.add(TEST_APP_NAME);
 
-        ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(
+        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder(
                 pbArgs.toArray(new String[pbArgs.size()])
         );
 
diff --git a/test/jdk/javax/management/remote/mandatory/version/ImplVersionTest.java b/test/jdk/javax/management/remote/mandatory/version/ImplVersionTest.java
index 8ee4e769cd8..0a179358466 100644
--- a/test/jdk/javax/management/remote/mandatory/version/ImplVersionTest.java
+++ b/test/jdk/javax/management/remote/mandatory/version/ImplVersionTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,69 +30,48 @@
  * system property.
  * @author Luis-Miguel Alventosa, Joel Feraud
  *
- * @run clean ImplVersionTest ImplVersionCommand
+ * @library /test/lib
  * @run build ImplVersionTest ImplVersionCommand ImplVersionReader
  * @run main ImplVersionTest
  */
 
+import jdk.test.lib.process.ProcessTools;
+
 import java.io.File;
 
 public class ImplVersionTest {
 
-    public static void main(String[] args) {
-        try {
-            // Get OS name
-            //
-            String osName = System.getProperty("os.name");
-            System.out.println("osName = " + osName);
-            if ("Windows 98".equals(osName)) {
-                // Disable this test on Win98 due to parsing
-                // errors (bad handling of white spaces) when
-                // J2SE is installed under "Program Files".
-                //
-                System.out.println("This test is disabled on Windows 98.");
-                System.out.println("Bye! Bye!");
-                return;
-            }
+    public static void main(String[] args) throws Exception {
 
-            // Get Java Home
-            String javaHome = System.getProperty("java.home");
+        // Get test src
+        //
+        String testSrc = System.getProperty("test.src");
 
-            // Get test src
-            //
-            String testSrc = System.getProperty("test.src");
+        // Get test classes
+        String testClasses = System.getProperty("test.classes");
 
-            // Get test classes
-            String testClasses = System.getProperty("test.classes");
+        // Build command string
 
-            // Build command string
-            String command =
-                javaHome + File.separator + "bin" + File.separator + "java " +
-                " -classpath " + testClasses +
-                " -Djava.security.manager -Djava.security.policy==" + testSrc +
-                File.separator + "policy -Dtest.classes=" + testClasses +
-                " ImplVersionCommand " + System.getProperty("java.runtime.version");
-            System.out.println("ImplVersionCommand Exec Command = " + command);
+        String[] command = new String[] {
+            "-Djava.security.manager",
+            "-Djava.security.policy==" + testSrc + File.separator + "policy",
+            "-Dtest.classes=" + testClasses,
+            "ImplVersionCommand",
+            System.getProperty("java.runtime.version")
+        };
 
-            // Exec command
-            Process proc = Runtime.getRuntime().exec(command);
-            new ImplVersionReader(proc, proc.getInputStream()).start();
-            new ImplVersionReader(proc, proc.getErrorStream()).start();
-            int exitValue = proc.waitFor();
+        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder(command);
+        Process proc = pb.start();
+        new ImplVersionReader(proc, proc.getInputStream()).start();
+        new ImplVersionReader(proc, proc.getErrorStream()).start();
+        int exitValue = proc.waitFor();
 
-            System.out.println("ImplVersionCommand Exit Value = " +
-                               exitValue);
-            if (exitValue != 0) {
-                System.out.println("TEST FAILED: Incorrect exit value " +
-                                   "from ImplVersionCommand");
-                System.exit(exitValue);
-            }
-            // Test OK!
-            System.out.println("Bye! Bye!");
-        } catch (Exception e) {
-            System.out.println("Unexpected exception caught = " + e);
-            e.printStackTrace();
-            System.exit(1);
+        System.out.println("ImplVersionCommand Exit Value = " + exitValue);
+        if (exitValue != 0) {
+            throw new RuntimeException("TEST FAILED: Incorrect exit value " +
+                                       "from ImplVersionCommand " + exitValue);
         }
+        // Test OK!
+        System.out.println("Bye! Bye!");
     }
 }
diff --git a/test/jdk/javax/management/security/HashedPasswordFileTest.java b/test/jdk/javax/management/security/HashedPasswordFileTest.java
index 7a3f02bc7c8..195a9cd3449 100644
--- a/test/jdk/javax/management/security/HashedPasswordFileTest.java
+++ b/test/jdk/javax/management/security/HashedPasswordFileTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -468,10 +468,6 @@ public class HashedPasswordFileTest {
         perms.add(PosixFilePermission.OWNER_READ);
         perms.add(PosixFilePermission.OWNER_WRITE);
         Files.setPosixFilePermissions(file.toPath(), perms);
-
-        pbArgs.add("-cp");
-        pbArgs.add(System.getProperty("test.class.path"));
-
         pbArgs.add("-Dcom.sun.management.jmxremote.port=0");
         pbArgs.add("-Dcom.sun.management.jmxremote.authenticate=true");
         pbArgs.add("-Dcom.sun.management.jmxremote.password.file=" + file.getAbsolutePath());
@@ -481,7 +477,7 @@ public class HashedPasswordFileTest {
         pbArgs.add("jdk.management.agent/jdk.internal.agent=ALL-UNNAMED");
         pbArgs.add(TestApp.class.getSimpleName());
 
-        ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(
+        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder(
                 pbArgs.toArray(new String[0]));
         Process process = ProcessTools.startProcess(
                 TestApp.class.getSimpleName(),