1

あなたの助けが必要です。intargcとchar*argv []を受け取るmain()関数である「generator.out」と呼ばれるC実行可能ファイルがあります。このメイン関数の引数は、ファイル(sample.daと呼びましょう)とターゲットファイル(out.bnと呼びましょう)です。これらの名前(sample.daおよびout.bn)を読み取って関数を実行できるJavaインターフェイスを作成する必要があります。私がこれまでに持っているコードは次のとおりです。

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の初心者なので、これについてはあまり理解していません。このプログラムを実行するには、単純なインターフェイスが必要です。

どうもありがとうございます!

4

2 に答える 2

2

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();
于 2012-05-25T20:25:07.320 に答える
0

コマンドラインで行うのと同じように、引数を追加するだけです。

Runtime.getRuntime().exec(
    "/home/user/workspace/proj2/./generator.out sample.da out.bn");

さまざまな部分を配列として使用する方法を使用すると、より適切に機能する場合があります。

Runtime.getRuntime().exec(
    new String[] {"/home/user/workspace/proj2/./generator.out",
        "sample.da", "out.bn"}):
于 2012-05-25T20:24:55.483 に答える