java怎么样调用其他java程序
在Java中,我们可以使用以下几种方法来调用其他Java程序:
1、编译并运行外部Java程序
2、使用Runtime类执行外部Java程序
3、使用ProcessBuilder类执行外部Java程序
4、使用Process类执行外部Java程序
5、使用URLClassLoader加载并运行外部Java程序
6、使用JAR文件执行外部Java程序
下面将详细介绍这些方法。
1、编译并运行外部Java程序
我们需要编写一个Java程序,例如HelloWorld.java
:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
我们需要编译这个Java程序:
javac HelloWorld.java
接下来,我们可以使用java
命令来运行编译后的Java程序:
java HelloWorld
2、使用Runtime类执行外部Java程序
我们可以使用Runtime
类的exec()
方法来执行外部Java程序,我们可以执行上面创建的HelloWorld.class
文件:
public class CallOtherJavaProgram { public static void main(String[] args) { try { Runtime.getRuntime().exec("java HelloWorld"); } catch (IOException e) { e.printStackTrace(); } } }
3、使用ProcessBuilder类执行外部Java程序
ProcessBuilder
类是Java 5引入的一个类,它提供了一个更灵活的方式来执行外部进程,我们可以执行上面创建的HelloWorld.class
文件:
import java.io.IOException; import java.util.ArrayList; import java.util.List; public class CallOtherJavaProgram { public static void main(String[] args) { List<String> command = new ArrayList<>(); command.add("java"); command.add("HelloWorld"); try { ProcessBuilder processBuilder = new ProcessBuilder(command); Process process = processBuilder.start(); process.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
4、使用Process类执行外部Java程序
除了使用ProcessBuilder
类,我们还可以使用Process
类来执行外部Java程序,我们可以执行上面创建的HelloWorld.class
文件:
import java.io.IOException; import java.io.InputStream; import java.util.Scanner; public class CallOtherJavaProgram { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("java HelloWorld"); InputStream inputStream = process.getInputStream(); Scanner scanner = new Scanner(inputStream).useDelimiter("\\A"); String output = scanner.hasNext() ? scanner.next() : ""; System.out.println(output); scanner.close(); } catch (IOException e) { e.printStackTrace(); } finally { System.exit(0); } } }
5、使用URLClassLoader加载并运行外部Java程序
我们可以使用URLClassLoader
类来加载并运行外部Java程序,我们可以加载并运行上面创建的HelloWorld.class
文件:
import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.*; import javax.tools.*; import com.sun.*; // For sun classes like ToolProvider and ClassFileManager$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxyImpl$1MalformedByteSequenceExceptionProxy