Java 和 C 集成 - 运行应用程序

标签 java c

我需要你的帮助。我有一个名为“generator.out”的 C 可执行文件,它是一个接收 int argc 和 char * argv[] 的 main() 函数。这个主函数的参数是一个文件(我们称之为 sample.da)和一个目标文件(我们称之为 out.bn)。我需要创建一个可以读取这些名称(sample.da 和 out.bn)并运行我的函数的 java 接口(interface)。到目前为止我的代码是:

package swingapps;

import javax.swing.*;
import java.awt.Dimension;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.lang.*;


public class Swingapps {
private JButton button = new JButton("Generate Bayesian Network");
private JTextField path=new JTextField(40);
private JTextField name=new JTextField(40);
public Swingapps(JPanel jp) {
    jp.add(button);
    jp.add(path);
    jp.add(name);
    button.addActionListener(new Handler());
    path.addActionListener(new Read());
    name.addActionListener(new Call());
}
String text;
private class Read implements ActionListener {
    public void actionPerformed(ActionEvent evt) {
    text = path.getText();
    path.selectAll();
}
}

String namet;
private class Call implements ActionListener {
    public void actionPerformed(ActionEvent evt) {
    namet = name.getText();
    path.selectAll();
}
}
File filep=new File("text"+File.separator+"text");
File filen=new File("namet"+File.separator+"namet");

private class Handler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        try {
        Process p= Runtime.getRuntime().exec("/home/user/workspace/proj2/./generator.out");
        }
        catch(IOException ioex)
        {
            ioex.printStackTrace();
        }
    }
}

public static void main(String[] args) {
    JFrame frame = new JFrame("Contador               ");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel p = new JPanel();
    frame.setContentPane(p);
    p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS));
    Swingapps app = new Swingapps(p);
    frame.pack();
    frame.setVisible(true);
    }

}

请注意,我是 Java 的新手,所以我不太了解这一点。我只需要一个简单的界面来运行这个程序!

非常感谢!

最佳答案

看看ProcessBuilder类,这里有一个可能适合你的情况的例子:

String command = "generator.out";
String arg1    = "sample.da";
String arg2    = "out.bn";
java.io.File workinDir = new java.io.File("/tmp");
ProcessBuilder pb = new ProcessBuilder(command, arg1, arg2);
pb.directory(workinDir);
Process p = pb.start();

关于Java 和 C 集成 - 运行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760736/

相关文章:

c++ - C:C 中的 volatile 数组

c - 结构数组 - 数组具有不完整的元素类型(在 C 中)

java - Java中是否可以使用递归无限地运行程序?

java - 如何模拟 DataSourceTransactionManager ?

java - 如何将一个项目引用到另一个项目

java - 同一类的不同实例的单独日志文件

python - 你如何将 Python cv2.cv.LoadImage 编码到 C IplImage->imageData 结构中

java - 如何使用 postman 在keycloak中添加新用户?

c - 我的自分检查功能没有按预期工作

c - 是否可以使用 C 更改 Linux 终端文本和背景颜色?