在 Java 编程领域,通常需要在单独的进程中执行应用程序。虽然使用 Runtime.getRuntime().exec() 的传统方法很方便,但它受到平台特殊性的影响。本文提出了一种解决此限制的解决方案,并提供了一种更可移植的方法。
问题概要:
Java 应用程序是否可以在基于单独进程的进程中启动其名称而不是其位置,无论底层平台如何?
建议的解决方案:
该解决方案利用 Java 系统属性来派生构建执行所需的信息命令。下面与平台无关的代码片段演示了如何实现此目的:
<code class="java">import java.io.IOException; import java.util.List; import java.util.LinkedList; public final class JavaProcess { private JavaProcess() {} public static int exec(Class klass, List<String> args) throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); String className = klass.getName(); List<String> command = new LinkedList<>(); command.add(javaBin); command.add("-cp"); command.add(classpath); command.add(className); if (args != null) { command.addAll(args); } ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.inheritIO().start(); process.waitFor(); return process.exitValue(); } }</code>
用法:
要使用建议的方法执行 Java 应用程序,请按照以下步骤操作:
示例:
<code class="java">int status = JavaProcess.exec(MyClass.class, args);</code>
优点:
以上是Java 应用程序是否可以根据其名称在单独的进程中启动,而不管平台如何?的详细内容。更多信息请关注PHP中文网其他相关文章!