通过runtime.exec()将值传递到另一个java项目

时间:2013-05-08 17:50:45

标签: java netbeans

这是我从另一个java项目调用java项目的代码

package pkgtry;
import java.io.*;

public class Try 
{
  private static void runProcess(String command) throws Exception 
  {
    Process pro = Runtime.getRuntime().exec(command);
    pro.waitFor();
    InputStream inputStream = pro.getInputStream();
    int b = -1;
    while ( (b =  inputStream.read()) != -1 ) 
    {
        System.out.write(b);
    }
  }

  public static void main(String[] args) 
  {
     int x=10;
     try 
     {
            runProcess("javac -d . C:\\Users\\owner\\Documents\\NetBeansProjects\\input\\src\\input\\Input.java");
            runProcess("java input.Input");
     }
     catch (Exception e) 
     {
        e.printStackTrace();
     }
  }
}

此代码运行正常。我想要的是将一个变量说'x'从Try.java传递给Input.java

我想知道在Try.java中发送所有更改以发送参数,并在Input.java中接收参数。提前致谢

2 个答案:

答案 0 :(得分:1)

您需要将其附加到command,并在主要方法的Input.java中将此值存储在args参数中。

答案 1 :(得分:0)

您希望传递给被调用程序的所有内容都会添加到其命令行中,如此

runProcess("java input.Input All Parameters You Want To Pass");

在Input.java中,您可以通过读出String[] args来检索这些参数,如下所示:

public class Input {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

将产生

All
Parameters  
You  
Want  
To  
Pass

但是你应该知道,这是一个相当苛刻的方法,让一段Java代码调用其他一些Java代码,你可以将包含Input的项目生成的jar添加到Try项目并实例化输入直接上课。通过命令行调用是缓慢而繁琐的,并严重限制了两个类之间的通信(一个方向的命令行参数,另一个方向的整数返回值。