Newsgroup: it.comp.java
Titolo: Java e app Esterne

bSrc.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						Runtime rt = Runtime.getRuntime();
						String cmd = "motor.exe ";
						cmd += "prog/";
						cmd += tSk.getText();
						cmd += ".txt";
						try
						{
							Process figlio = rt.exec(cmd);
						}
						catch(IOException ioe)
						{
							System.out.println(ioe.toString());
						}
					}
				});
  Cosi richiamo un app esterna fatta in C ma nn vedo nessun output
 Mi sa che è colpa de fatto che esege l'app in un processo separato
Comq risolvo?



Dal Process, mediante i metodi getInputStream e getErrorStream, ottieni
degli InputStream collegati rispettivamente allo standard output e allo
standard error del processo.
Quindi qualcosa del genere dovrebbe funzionare:
Process figlio = rt.exec(cmd);
BufferedReader reader =
  new BufferedReader(
    new InputStreamReader(figlio.getInputStream()));
String s = null;
while ((s = reader.readLine()) != null) {
  System.out.println(s);
}
-- 
Lucio Benfante
Java User Group Padova: 
http://www.jugpadova.it
Brainbench MVP for Java 1: 
http://www.brainbench.com
MyTranscript: 
http://www.brainbench.com/transcript.jsp?pid=167064

Non mi va lo stesso:(

 Non mi va lo stesso:(
Cioe'? Che errore ti da'?


Non mi visualizza nulla :/

 Non mi visualizza nulla :/
Alcuni tentativi:
1. Sei sicuro che il comando venga effettivamente eseguito?
Hai provato a verificare l'exit code del processo?
2. Sei sicuro che il programma emetta dell'output? Sei sicuro che l'output
venga emesso sullo standard output e non sullo standard error.
3. come lanci la tua applicazione Java?
4. Quale sistema operativo usi?


 4. Quale sistema operativo usi?
WinXp

 Via bat
..e ti rimane aperta la consolle? (finestra MS-DOS)


Nn mi restituisce nulla e rimane tutto come prima

 Nn mi restituisce nulla e rimane tutto come prima
Potresti spiegare cosa significa "non mi restituisce nulla"?
Prova a descrivere le operazioni che fai.


 ha scritto nel messaggio
news:pan.2003.11.18....@mailandnews.com...


 chiamo il mio eseguibile con il cod sopra ma nn compare nulla in console :(
...non che tu ti sia sprecato con la descrizione di cio' che fai... :-)
Ho scritto un programmino per lanciare un comando dopo averlo digitato in
un campo di testo. Scrive l'output sia in una TextArea, sia sulla console.
Non ho modo di provarlo su una macchina XP, ma dovrebbe funzionare.
Provalo con il comando che vuoi usare nella tua applicazione e, se
funziona, studiatene il codice.
//  ********* INIZIO FILE CommandLauncher.java *********
import java.awt.*;
import java.awt.event.*;
import java.io.*;
/**
 * A simple GUI for launching commands.
 *
 * @author Lucio Benfante
 */
public class CommandLauncher {
    private Frame frame;
    private TextField tfCommand;
    private Button bExecute;
    private TextArea taOutput;    
 
    /** Creates a new instance of CommandLauncher */
    public CommandLauncher() {
        this.frame = new Frame("Command Launcher");
        this.tfCommand = new TextField(50);
        this.bExecute = new Button("Execute");
        this.taOutput = new TextArea(25, 80);
    }
 
    /** Arranges the components in the frame */
    private void arrange() {
        Panel pNorth = new Panel();
        pNorth.add(new Label("Command:"));
        pNorth.add(this.tfCommand);
        pNorth.add(this.bExecute);
        this.frame.add(pNorth, BorderLayout.NORTH);
        this.frame.add(this.taOutput, BorderLayout.SOUTH);
        // set event handlers
        this.frame.addWindowListener(
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    frame.dispose();
                    System.exit(0);
                }
        });
        Executor executor = new Executor();
        this.bExecute.addActionListener(executor);
        this.tfCommand.addActionListener(executor);
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        CommandLauncher app = new CommandLauncher();
        app.arrange();
        app.frame.pack();
        app.frame.setVisible(true);
    }
 
    /**
     * The action listener that executes commands.
     * It sends the output to the text area and to the standard output.
     */
    public class Executor implements ActionListener {        
        public void actionPerformed(ActionEvent e) {
            taOutput.setText("");
            try {
                Process p = Runtime.getRuntime().exec(tfCommand.getText());
                BufferedReader r = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
                String line = null;
                while ((line = r.readLine()) != null) {
                    taOutput.append(line);
                    taOutput.append("\n");
                    System.out.println(line);
                }
                int exitValue = p.waitFor();
                if (exitValue == 0) {
                    taOutput.append("Done.\n");
                    System.out.println("Done.\n");
                } else {
                    taOutput.append("Error: "+exitValue+"\n");
                    System.out.println("Error: "+exitValue+"\n");                    
                }
            } catch (Exception ex) {
                StringWriter sw = new StringWriter();
                PrintWriter w = new PrintWriter(sw, true);
                ex.printStackTrace(w);
                taOutput.setText(sw.toString());
                System.out.println(sw.toString());
            }            
        }        
    }
 
}
//  ********* FINE FILE CommandLauncher.java *********


Se qualcuno mi da la mail gli invio il prog cosi mi dite cosa nn va

 Se qualcuno mi da la mail gli invio il prog cosi mi dite cosa nn va
Scusa...ma hai provato il mio programma?


 ha scritto nel messaggio
news:pan.2003.11.19....@mailandnews.com...


 nn mi funzia lo stesso .................. tnk cmq per l'aiuto e la pazienza
Cosa non "funzia"?


 ha scritto nel messaggio
news:pan.2003.11.19....@mailandnews.com...


 Non mi vidualizza nulla nella textbox:(
Cio' puo' dipendere solo da due cause:
1. Il programma che invochi non produce output
2. Produce output sullo standard error
Hai provato ad eseguire qualche altro comando, ad esempio il semplice DIR?
