如何在不知道 class 名称的情况下从另一个 java 程序编译和 运行 多个 java 程序?

How to compile and run MULTIPLE java programs from another java program without knowing their class names?

假设有一个 zip 文件包含 4-5 个简单的 java 程序。我想编写一个代码来解压缩文件(这部分很简单),编译并 运行s 中的所有 .java 文件。

到目前为止,我已经能够使用另一个 java 程序编译和 运行 个人 java 程序,尽管我必须知道它们的 class 名称。如果我只知道它们所在的目录而不知道它们的名字怎么办?

通常对于 运行 任何程序,您需要知道您将要执行的程序的名称。 现在,如果 "all" 您的 zip 文件中的 class 是 运行,那么您可以:

  1. 解压缩文件。
  2. 读取所有文件名(classes)并放入 它们在 String[].
  3. 解析字符串[]并执行每个名称 (class) 在数组上作为 class;您可能需要反射 输入 link 此处描述.

如果您需要更多帮助,请告诉我。

尝试这样的事情:

    File directory = new File("c:\temp");
    File[] files = directory.listFiles();
    for (File thisClass : files) {
        Runtime runTime = Runtime.getRuntime();
        try {
            Process process = runTime.exec(thisClass.getName());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }