【问题标题】:How to call Main Method from another Class in Java as a Process如何从 Java 中的另一个类作为进程调用 Main 方法
【发布时间】:2021-12-03 03:23:34
【问题描述】:

我有这两个课程:

public class Sumador {
    
    public static void main(String[] args) {
        int primerNumero = Integer.parseInt(args[0]);
        int segundoNumero = Integer.parseInt(args[1]);
        int suma = 0;
        
        for(int k=primerNumero; k < segundoNumero; k++) {
            suma += k;
        }
        System.out.println("Resultado: " + suma);
    }
}
public class Lanzador {
    
    public void lanzarSumador() {
        Process p;
        InputStream is;
        BufferedReader br = null;
        
        try {
            p = new ProcessBuilder("java", "Sumador.java", "10", "20").start();
            is = p.getInputStream();
            br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            while(br.ready()) {
                System.out.println(br.readLine());
            }
            
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        Lanzador l = new Lanzador();
        l.lanzarSumador();
        
    }
}

我想做的是运行第二个类以将第一个类作为第二个中的进程,但对我来说不幸的是,它不起作用,我不明白为什么。

每一个回复都会非常感谢。感谢您的宝贵时间。

【问题讨论】:

  • 我有点不清楚你在问什么。您想从Lanzador.main 拨打Sumador.main 吗?如果是这样,应该没有问题,所以请提供一些关于什么不起作用的细节。或者您是否希望在Lanzador 中将Sumador 作为单独的Java 程序运行?如果是这样,请解释为什么这在 Java 中是一件非常不寻常的事情。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: java class process main


【解决方案1】:

编辑: 您可以从 Lanzador 类的 main 方法调用 Sumador 类的 main 方法,如下所示:

public static void main(String[] args) {
    Lanzador l = new Lanzador();
    l.lanzarSumador();
    Sumador.main(null);
}

您的程序执行中只能有一个主类。您可以做的是在公共类中更改 Sumador 类的 main 方法,并在 Lanzador 类的 main 方法中调用它

public class Sumador {

public static void sumadorMethod() {
    int primerNumero = Integer.parseInt(args[0]);
    int segundoNumero = Integer.parseInt(args[1]);
    int suma = 0;
    
    for(int k=primerNumero; k < segundoNumero; k++) {
        suma += k;
    }
    System.out.println("Resultado: " + suma);
}   

}

那么您在 Lanzador 类中的主要方法如下所示:

public static void main(String[] args) {
    Lanzador l = new Lanzador();
    l.lanzarSumador();
    Sumador.sumadorMethod();
}

【讨论】:

  • 您的回答具有误导性。在单个 Java 程序中拥有多个 public static main(String[]) 方法完全没有问题。他们可以很高兴地互相打电话,没有问题。其中main是代码的入口点是在代码外部定义的。
  • 你是对的,我的错。您可以调用 Sumador 类中的 main 方法,例如 {Sumador.main(null);} 我将编辑我的回复以避免误解。问候
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 2023-02-20
  • 2013-10-08
  • 2011-06-18
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多