Runtime class in java

后端 未结 6 959
野性不改
野性不改 2020-12-18 12:03

How to execute a java program with the help of Runtime.getRuntime().exec(). For example we shall have the java file path as c:/java/abc.java. Please help me with the code.

相关标签:
6条回答
  • 2020-12-18 12:29

    Please see the excellent resource which used to be called javaalmanac.

    http://www.exampledepot.com/egs/java.lang/Exec.html

    try {
        // Execute a command with an argument that contains a space
        String[] commands = new String[]{"grep", "hello world", "/tmp/f.txt"};
        commands = new String[]{"grep", "hello world", "c:\\Documents and Settings\\f.txt"};
        Process child = Runtime.getRuntime().exec(commands);
     } catch (IOException e) {
     }
    
    0 讨论(0)
  • 2020-12-18 12:35

    You should use ProcessBuilder instead of Runtime. Basic usage is like:

    Process process = new ProcessBuilder(command).start();
    

    You will find more code under the link above. Also see this question.

    0 讨论(0)
  • 2020-12-18 12:36

    Assuming that abc.java contains a main method that you want to execute:

    Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\")
    Runtime.getRuntime().exec("java c:\java\abc")
    
    0 讨论(0)
  • 2020-12-18 12:37

    You mean you want a Java program to run another Java program. This SO thread might be helpful, in that case.

    0 讨论(0)
  • 2020-12-18 12:45

    Do not forget that:

    • you may need to read stdout/stderr of a java program
    • you may have to set/update environment variable and PATH before executing your java command

      CreateProcess: c:\j2sdk1.4.0\bin\helloworld error=2

    means Win32's CreateProcess returns a 2 as error code when it cannot find the command you specify; more specifically, when the command does not refer to an executable file on its lookup path.

    Look at this SO question for a more complete "Runtime.getRuntime().exec()" code, and also to this snippet.

    This code creates a shell (as in Runtime.getRuntime().exec("cmd /K")), in which you write on sdtin whatever command you want to execute.

    The interest of this approach is to reuse the shell process to benefit from a previous command: it you execute a 'cd', then execute a 'dir', the latter command would display the content of the directory referenced by the cd command.

    The same would be true for PATH settings, just before using javac or java.

    0 讨论(0)
  • 2020-12-18 12:48
    String path1 = "f://" + File.separator+username+File.separator+progName; 
    Runtime runtime = Runtime.getRuntime();
    String command = "javac -classpath " + path + " " + path1;
    System.out.println(command);
    Process process = runtime.exec(command);
    InputStream error = process.getErrorStream();
    
    0 讨论(0)
提交回复
热议问题