java怎么样调用其他java程序

我不是码神2024-01-14java30

在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

评论列表

王燕
王燕
2024-01-17

这篇文章详细介绍了如何在Java中调用其他Java程序,对于理解Java的模块化和跨类通信具有重要意义。

李阳
李阳
2024-02-23

在Java中,可以通过多种方式调用其他Java程序,例如使用`Runtime.exec()`方法或`ProcessBuilder`类。

陈洪
陈洪
2024-03-08

java怎么样调用其他java程序一文深入浅出地介绍了如何在Java中实现跨模块的类调用,为Java开发者提供了宝贵的实践经验。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。