Question

The tester program that I wanted execute takes in a single argument -- a filename -- and makes a copy of the file with the line "This is a modified version." at the top of the new file. When I tested this program alone, it works and produces a new file.

Then I wrote the program to call the file:

public static void main(String[] args) {
    try {
        Process p = Runtime.getRuntime.exec("java Tester.java inputfilename.txt");
        p.waitFor();
        System.out.println("Done");
    } catch(Exception e) {
        System.out.println("Error");
        System.exit(0);
    }
} 

The program above printed out "Done" but it never made a modified version of the file I passed in. I then put some println()'s in the other program. When I run that program alone, it printed out those statements, but when I tried to call it from the program above, it did not. How do I fix this?

Was it helpful?

Solution

You have to compile .java file first and launch it later:

Compile (class containing the main method):

javac Tester.java

Launch:

java Tester inputfilename.txt

OTHER TIPS

"java Tester.java inputfilename.txt"

Should be:

"java Tester inputfilename.txt"

But do yourself a favor and read (and implement) all the recommendations of When Runtime.exec() won't.

That might solve other problems. If not, it should provide more information as to the reason for failure.

Then ignore that it refers to exec and build the Process using a ProcessBuilder. Also break a String arg into String[] args to account for arguments which themselves contain spaces.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top