Avatar billede pentium Nybegynder
19. august 2005 - 14:31 Der er 13 kommentarer og
1 løsning

Start af eksekverbar jar filer

Hejsa

Jeg har to programmer som er eksekverbar jar filer. Det ene er et GUI med start og stop knap og et jTextArea1(GUI.jar). Den anden er en konsol fil(KS.jar).

KS.jar ligger data ned i en MySql, og skriver til en txt(c:\test.txt) fil. Hvis jeg køre denne fil for sig selv, ved at klikke på den, kan jeg se at der kommer data ned i databasen og txt filen.

Og jeg kan med min GUI.jar i mit jTextArea1 felt læse at der bliver skrevet til c:\test.txt filen. Jeg appender indholdet fra c:\test.txt til jTextArea.

Når jeg trykker på start:
......
Process proc = null;
Runtime rt = untime.getRuntime();
Process proc = rt.exec("javaw -jar C:\\sk.jar");
......
Jeg kan se med min jobliset at sk.jar er startet op, men den skriver ikke i txt filen eller i databasen.

Hvad skal jeg når jeg har starete sk.jar op?
Mangler jeg noget?

Hvis jeg skriver Process proc = rt.exec("notepad.exe"); starter notepad op ganske fint.
Avatar billede arne_v Ekspert
19. august 2005 - 14:36 #1
der er flere muligheder

prøv kun at angive javaw som kommando og parameterne som et andet argument (der er flere
varianter af exec)

prøv evt. at læse fra den input/output stream der creates
Avatar billede arne_v Ekspert
19. august 2005 - 14:37 #2
var det ikke nemmere at køre det hele i et program ??
Avatar billede pentium Nybegynder
19. august 2005 - 14:45 #3
Iden bag var at lave selve programmet, som skulle lave alt data behandlingen, at køre i en seperat process, så GUI ikke ville blive belastet.

Hvad mener du med "javaw som kommando og parameterne som et andet argument "
Avatar billede arne_v Ekspert
19. august 2005 - 14:58 #4
eksempel:

      String[] cmd = { "cmd", "/c", "dir", ">", "z.txt" };
      Runtime.getRuntime().exec(cmd);
Avatar billede pentium Nybegynder
19. august 2005 - 15:01 #5
Okai. Har kigget lidt på det.
Avatar billede arne_v Ekspert
19. august 2005 - 15:25 #6
nogen effekt ?
Avatar billede pentium Nybegynder
19. august 2005 - 15:33 #7
Har prøvet med følgende:

    public void jButton1_mouseClicked(MouseEvent e) {

        String osName = System.getProperty("os.name");
        System.out.println(osName);

        if (osName.endsWith("Windows XP")) {
            String[] cmd = {"cmd", "/c", "c:/windows/system32", ">",
                          "notepad.exe"};
            try {
                Process p = Runtime.getRuntime().exec(cmd);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

Så får jeg denne excption:
java.io.IOException: CreateProcess: cmd /c c:/windows/system32 > notepad.exe error=193
Avatar billede pentium Nybegynder
19. august 2005 - 15:35 #8
Der skal ikke stå endsWith  med equals. Lige en taste fejl. Men får stadig excption.
Avatar billede arne_v Ekspert
19. august 2005 - 15:37 #9
hvad pokker skulle kommandoen:

cmd /c c:/windows/system32 > notepad.exe

gøre ?
Avatar billede arne_v Ekspert
19. august 2005 - 15:37 #10
String[] cmd = {"javaw", "-jar", "C:\\sk.jar" };

var vel det du skulle
Avatar billede pentium Nybegynder
19. august 2005 - 15:43 #11
jow det var så, det er bare for at teste.
Avatar billede arne_v Ekspert
19. august 2005 - 15:45 #12
vil du teste notepad så prøv:

String[] cmd = {"notepad", "C:\\foobar.txt" };
Avatar billede pentium Nybegynder
19. august 2005 - 15:50 #13
Okai. Takker for hjælpem arne_v.

Det ser ud til at virke, nu. Vil lade det stå, men at punke data ned i databasen.

Lig et svar.
Avatar billede arne_v Ekspert
19. august 2005 - 15:54 #14
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester