webForumDet fria alternativet
Logga in / Bli medlem

Interagera med program

Java

3 svar · 302 visningar · startad av swede

Medlem sedan feb. 2004230 inlägg
Frågan#1

Hej!
Jag försöker skriva en java applikation som ska starta ett program, ett admin cli från en leverantör, och sedan interagera med programmet.

Har hittat att man kan använda sig av Runtime.exec("fil");
och att stdin och stdout redirectas.

Men jag får inte till det....

Min app:

import java.io.*;

class arrayManager {

  public static void main(String args[]){
    try {
      String ls_str;
      Process ls_proc = Runtime.getRuntime().exec("/opt/cvcli/cvcli");

      DataInputStream ls_in = new DataInputStream(ls_proc.getInputStream());
      try {
        while ((ls_str = ls_in.readLine()) != null) {
          System.out.println(ls_str);

          if (ls_str == "Commands Loaded ....") {
            try {
              ls_proc.getOutputStream.writeChars("list array_status");
            }catch (IOExcepton e) {
              System.out.println("Couldnt write to clcli");
            }
          }
        }
      }catch (IOException e) {
        System.exit(0);
      }
    }catch (IOException e1) {
      System.out.println(e1);
      System.exit(1);
    }
  System.exit(0);
  }
}

I det här fallet så startas "/opt/cvcli/cvcli" och jag fångar upp vad den returnerar, när den returnerat "Commands Loaded ...." så är det tänkt att min applikation ska skicka kommandot "list array_status" tillbaka.

Det här funkar inte, vad har jag gjort för fel?

Medlem sedan apr. 200357 inlägg
#2

När du jämför värdet av två strängar i java så måste du köra:

str1.equals(str2);

det fungerar inte med

str1 == str2
Medlem sedan feb. 2004230 inlägg
#3

Oj jag ens kom så långt...
Den klagar vid kompilering på min getOutputStream :(

Medlem sedan apr. 200357 inlägg
#4

Vad får du för kompilerings fel!? Såg att du glömt parenteser efter getOutputStream i din kod och sen så finns det ingen writeChars metod på OutputStream utan du får använda write som tar en byte array, så din kod borde se så här:

    ls_proc.getOutputStream().write("list array_status".getBytes());
261 ms totalt · 4 externa anrop · v20260731065814-full.07527b5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)