在java中运行可执行文件时访问源代码变量

时间:2014-03-03 16:07:49

标签: java netbeans

我正在使用流程构建器从我的java代码运行一个名为“fio”的工具。该工具在Ci中的源代码需要从“fio”的源代码获取某些变量的值,当我运行该工具时在我的java代码中。我试图搜索解决方案,但找不到任何。 我怎么能这样做?可以为环境变量提供帮助吗? 这是我正在使用的代码

        String line=null;
        ProcessBuilder pb=new ProcessBuilder("fio","inp.fio");
        File f=new File("/home/nikhil/Nikhil");
        pb.directory(f);

        Process p=pb.start();
        InputStream i=p.getInputStream();
        InputStreamReader ir=new InputStreamReader(i);
        BufferedReader bf=new BufferedReader(ir);

        InputStream err=p.getErrorStream();
        InputStreamReader rerr=new InputStreamReader(err);
        BufferedReader bferr=new BufferedReader(rerr);

2 个答案:

答案 0 :(得分:2)

我将假设您可以访问fio的代码并可以重建它。您可以使用的一种机制是让fio将您感兴趣的局部变量状态输出到您正在处理的输出流(stdout或stderr)之一,并在每次更改和fio输出时将值作为消息解析出来更新的值。这使沟通变得相当简单。

如果您有大量复杂数据,则可能需要考虑为共享状态创建单独的通信通道(例如,共享内存,或命名管道或基于套接字的连接)。如果你只是对一些便宜的调试感兴趣,我只需要输出类似

的第一种方法

DBG {VAR1} =<值GT;

每当感兴趣的值发生变化时,

到stderr,并让你的Java中的stderr流处理程序记录状态,以便在需要的地方使用。

答案 1 :(得分:0)

我可以使用"共享内存"与我写的另一个新的C程序共享变量值,现在我可以从这个新的C程序中调用一个函数,它将返回变量的值,即" shared"在我使用JNI的java代码中。