Java Runtime.exec();

Salam. Menim bir dene run clasım var , onu istifafde ederek mən aPlusB.java faylını öncə compile elemək və sonra input olaraq iki rəqəm verib output – u check elemek istiyirəm. Aşağıda run classının kodu var

import java.io.*;

public class run {

    public static void main(String args[]) {

        String s = null;
        String command[] = new String[3];
        command[0] = "javac aPlusB.java";
        command[1] = "java aPlusB";
        command[2] = "1 2";        	
        
        try {
            Process p = Runtime.getRuntime().exec(command);
          
            
            BufferedReader stdInput = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new 
                 InputStreamReader(p.getErrorStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
            
            // read any errors from the attempted command
            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
            
            System.exit(0);
        }
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}

Sadəcə olaraq run eliyəndə Exception verir. Problemi necə həll elemık olar ?


Yadda saxlama
Kateqoriya: Java . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (7 cavab var)

(11:17, 14/05/2011 ) #2499

Exception-ın nə olduğunu yaza bilərsinizmi? Nə xəta verir?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:56, 14/05/2011 ) #2500

Problem ona görədir ki, Runtime.getRuntime().exec() metodu yalnız 1 comand qəbul edə bilir, sizdə isə 2 dənədi “javac” və “java”. Eyni zamanda array olmadan da etmək olar.
run classınızı bu şəkildə yaza bilərsiniz:

import java.io.*;

public class run {

    public static void main(String args[]) {
        String command = "javac aPlusB.java";
        runCommand(command);

        command = "java aPlusB 1 2";
        runCommand(command);

    }

    public static void runCommand(String command) {
        String s = null;
        try {
            Process p = Runtime.getRuntime().exec(command);
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }

            // read any errors from the attempted command
            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
            //System.exit(0);
        } catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:27, 14/05/2011 ) #2502

Cavabınıza görə təşəkkürlər . Ancaq yenede çalışmadı , daha doğrusu compile oldu ancaq “java aPlusB 1 2” hissəsi çalışmadı . Bir də ki, mən səhv etmirəmsə “java aPlusB 1 2” runCommand -a göndərəndə 1 və 2 argument kimi verilir aPlusB klasına. Ancaq mənim aPlusB.java klasım a və b integerlərini input kimi qəbul etməlidi.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(09:19, 16/05/2011 ) #2509

Main metoduna göndərilən arqumentlər “String[] args” massiv kimi göndərilir. Siz öz proqramınızda a və b-nı aşağıdakı kimi integerə çevirin.

a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:59, 16/05/2011 ) #2513

Burada məqsəd a+b -ni test etmek deyil. Programlama olimpiadalarında məsələnin şərti verilir, və həmin şərtə əsasən iştirakçılar istənilən programlama dilində program yazıb göndərirlər testing üçün. İndi təsəvvür edin ki, məsələnin şərti deyir ki, a və b ədədləri giriləcək , siz de onların cəmini cıxaracaq java dilində program yazın. təbii ki, kodlar bu formada olacaq:

public class APlusB
{
public static void main( String args[] )
{
Scanner sc =  new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();

System.out.println(a+b);

}
}

Əsas məqsəd bu tipli programı test etmekdi.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(14:06, 16/05/2011 ) #2514

public class APlusB
{
public static void main( String args[] )
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();

System.out.println(a+b);

}
}

Əsas məqsəd bu tipli programı test etmekdi.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(18:04, 16/05/2011 ) #2517

Bu proqramda a və b-ni input-dan oxuduğunuza görə onları əsas proqramdan İnputStream ilə göndərmək lazımdır. Vaxt olanda nümunə kod yazıb göstərərəm.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (13 saat əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (1 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (4 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (5 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (5 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (5 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (5 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (5 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (6 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (6 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (17 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (18 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (18 gün əvvəl)

rdrobert cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (18 gün əvvəl)

rdrobert cavab verdi - AliExpress, Telefon, Rüsum (18 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23234 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024